因为通过原型查找值是一次搜索过程,因此我们对原型所做的任何修改都能够立即从实例上反映出来。即使是先创建了实例在修改了原型也是一样的。直接在控制台进行操作,便于结果展现。
var person = new Person();
Person.prototype.name = "sunny";
function Person(){
}
其原因是因为实例和原型之间松散的连接关系,首先会在实例中搜索name,在没找到的情况下会继续搜索原型。
但是如果重写整个原型对象就不一样了。因为我们调用构造函数时会在实例中添加一个指向原型的指针,而把原型修改为另一个对象就相当于切断了构造函数和原型对象之间的联系。
function Person(){
}
var person = new Person();
Person.prototype = {
name:"cherry",
sayName:function(){
alert(this.name);
}
};
person.sayName();