使用原型共享价值

时间:2014-03-14 20:07:42

标签: javascript

如果原型由所有实例共享,为什么它不起作用?

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'

2 个答案:

答案 0 :(得分:2)

a.sharedValue = 'other value''other value'值分配给sharedValue实例a属性

原型链的工作方式是,属性访问将查看对象实例是否包含特定属性,如果找不到该属性,它将遍历原型链,直到它: / p>

  1. 找到属性并在原型
  2. 的任何级别返回该属性的值
  3. 在任何原型上找不到该属性并返回undefined
  4. 您还应注意,修改a.sharedValue = 'other value'不会对Module.prototype.sharedValue产生任何影响。

答案 1 :(得分:2)

要分配给原型,您需要明确地执行:

Module.prototype.sharedValue = "other value";

否则它会将属性分配给实例,该实例会掩盖原型上的值。