我创建了2个原型实例,更改了原型中的函数,更改反映在两个实例中(Great)。 但是,当我通过删除函数来修改原型时,该函数对于现有实例仍然存在。Javascript:修改原型不会影响现有实例
function A() {
this.name = "cool";
}
A.prototype = {
howCool: function() {
return this.name + "er";
}
};
var a1 = new A(),
a2 = new A();
a1.name = "hot";
//line1
console.log(a1.howCool());
//line2
console.log(a2.howCool());
A.prototype = {};
//line3
console.log(a1.howCool());
//line4
var a3 = new A();
console.log(a3.howCool());
1行和第2是否按预期工作和设置protoype回空后,线4表示预计未定义。然而第3行仍然显示功能定义。
您并未修改原型对象,而是创建了一个新对象。 – Bergi
另请参见[与'instanceof'相同的混淆](http://stackoverflow.com/q/14568239/1048572)和[如何正确定义Javascript原型](http://stackoverflow.com/q/17474390/ 1048572) – Bergi
您实际上已将原型属性重新分配给一个新对象。旧的仍然存在。 – abhishekkannojia