我創建了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