javascript - js中的每个实例都不会更新原型(prototype)值,为什么?

标签 javascript

如果我设置一个原型(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/

相关文章:

javascript - 为什么结果在循环中显示结果加上先前的结果?

javascript - Node.js 客户端 api key

javascript - React-Router - 将方法传递给子组件

Javascript - 如何检测文档是否已加载(IE 7/Firefox 3)

javascript - 使用 Lodash 按键求和

javascript - 一页上有两个导航固定导航栏

javascript - 使用值对对象属性进行排序

javascript - Nodejs + Mongoose 中的异步/等待

javascript - 如何将vuejs for循环索引值作为HTML按钮onclick javascript函数的参数传递

JavaScript 性能 : Call vs Apply