如果原型由所有实例共享,为什么它不起作用?
var Module = function(){};
Module.prototype.sharedValue = "value";
var a = new Module();
var b = new Module();
a.sharedValue = "other value";
console.log(b.sharedValue) // it prints 'value' and not 'other value'
答案 0 :(得分:2)
a.sharedValue = 'other value'
将'other value'
值分配给sharedValue
实例的a
属性。
原型链的工作方式是,属性访问将查看对象实例是否包含特定属性,如果找不到该属性,它将遍历原型链,直到它: / p>
undefined
您还应注意,修改a.sharedValue = 'other value'
不会对Module.prototype.sharedValue
产生任何影响。
答案 1 :(得分:2)
要分配给原型,您需要明确地执行:
Module.prototype.sharedValue = "other value";
否则它会将属性分配给实例,该实例会掩盖原型上的值。