如果我设置一个原型(prototype)值并创建两个实例
然后在一个实例中更新原型(prototype)值
现在其他实例原型(prototype)值不更新,为什么?
代码是
var A = function() {
}
A.prototype.u = 2;
var a = new A();
var b = new A();
a.u = 4
alert(a.u) // 4
alert(b.u) // 2
太不合理了,是原型(prototype)值不是这个值。对吧?
最佳答案
您不是在“更新原型(prototype)值”。您正在将新值写入本地对象而不是原型(prototype)链。本地属性掩盖了链上的属性。
alert(a.u);
查看 a
,找到 u
并提醒它。
alert(b.u);
看b
,没有找到一个u
,查找原型(prototype)链,找到一个 >u
并提醒它。
比较:
var A = function() {
}
A.prototype.u = 2;
var a = new A();
var b = new A();
a.u = 4;
A.prototype.u = 6;
alert(a.u);
alert(b.u);
关于javascript - js中的每个实例都不会更新原型(prototype)值,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28123596/