【发布时间】:2010-12-27 20:58:52
【问题描述】:
我很难理解为什么修改实例a 中的属性会修改实例b 上的相同属性。
var A = function (){
};
A.prototype.data = {
value : 0
};
var a = new A();
var b = new A();
console.log(a.data.value, b.data.value); // 0, 0
a.data.value = 5;
console.log(a.data.value, b.data.value); // 5, 5
prototype关键字不应该让data变量成为实例变量吗?
在这个按预期执行的示例中似乎不是这种情况:
var B = function (){
this.data = {
value : 0
};
};
var i = new B();
var j = new B();
console.log(i.data.value, j.data.value); // 0, 0
i.data.value = 5;
console.log(i.data.value, j.data.value); // 5, 0
我很困惑为什么原型方法不起作用。也许我缺乏一些概念知识。
【问题讨论】:
标签: javascript oop prototype