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

prototype value does not update for every instance in js, why?

本文关键字:实例 更新 为什么 js 原型      更新时间:2023-09-26

如果我设置一个原型值并创建两个实例

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

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

代码是

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

太不合理了,是原型值不是这个值,对吧?

你不是在"更新原型值"。您正在将新值写入本地对象,而不是原型链。本地属性掩盖链上较高的属性。

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);