一、什么是prototype?
prototype是一个对象,是构造函数的实例对象的原型。
二、prototype什么时候出现?
函数创建时他就会创建,在js中万物皆对象。每一个函数都是一个对象,函数对象都有自己的prototype。
三、prototype用来做什么?
prototype是函数实例对象的原型,函数实例的对象可以引用原型上面的属性。存放构造出来的对象
共同的东西,修改这里面的属性,构造出来的对象属性也会修改。
四、关于构造函数的prototype必须要懂的知识点
JavaScript中没有类,一切都是对象模拟出来的。修改函数的prototype后,之前出来的创造的实例
对象是不受影响的。只有之后创造的实例对象才能公用之前修改的原型对象。
详解:http://blog.csdn.net/admin9527_/article/details/78361780 里面有详细描述。
<script type="text/javascript">
function preson(){}
preson.prototype = {name:"刘云"}
var p1 = new preson();
console.log(p1.name);//刘云
var p2 = new preson();
console.log(p2.name);//刘云
console.log(p1.__proto__ === p2.__proto__);//true
preson.prototype = {name :"赵付泉"}
preson.prototype.age = 18;
var p3 = new preson();
console.log(p1.age);//undefined
console.log(p3.age);//18
console.log(p1.__proto__ === p3.__proto__);//false
</script>
p1和p2 都是引用原型上面的名字,他们类型和值是一样的所以是true。
修改原型上面的属性,之前创造的实例是不受影响的。因为他们不属于引用关系。
详解:http://blog.csdn.net/admin9527_/article/details/78361780 里面有详细描述。