原型值不会为js中的每个实例更新,为什么?

Roy*_*Roy 2 javascript

如果我设置原型值并制作两个实例

然后在一个实例中更新原型值

现在其他实例原型值没有更新,为什么?

代码是

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
Run Code Online (Sandbox Code Playgroud)

它是如此不合理,它的原型价值不是这个价值.对?

Que*_*tin 6

您不是"更新原型值".您正在将新值写入本地对象而不是原型链.本地财产掩盖了链条上方的那个.

alert(a.u);a,找到u并提醒它.

alert(b.u);看着b,找不到u,查找原型链,找到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);
Run Code Online (Sandbox Code Playgroud)