请解释为什么函数foo的新实例 obj2 仍然在items数组中有元素?当我打电话给新的foo()时,为什么它没有被覆盖?
var foo = function() {}
foo.prototype = {
items : [],
addItem : function()
{
this.items.push("item");
}
}
var obj = new foo();
obj.addItem();
console.log(obj.items.length); //1 as expected
var obj2 = new foo();
console.log(obj2.items.length); // 1, why not 0?????
答案 0 :(得分:1)
您已将其添加到原型中,这意味着所有实例都会共享它。您希望.flex-services
的每个实例都有一个新的items
数组。要实现这一点,您需要将其移出Foo
并进入函数体。您会将其附加到prototype
。
this
答案 1 :(得分:0)
由于您对{1}}引用了1个数组,因此它将是所有新对象(obj1和obj2)中的相同数组。
您的items
应该是:
foo