说我有这个代码:
function ParentClass()
{
var anArray = [ ];
this.addToArray = function(what)
{
anArray.push(what);
console.log(anArray);
};
}
FirstSubClass.prototype = new ParentClass();
FirstSubClass.prototype.constructor = FirstSubClass;
function FirstSubClass()
{
this.addToArray('FirstSubClass');
}
SecondSubClass.prototype = new ParentClass();
SecondSubClass.prototype.constructor = SecondSubClass;
function SecondSubClass()
{
this.addToArray('SecondSubClass');
}
当我运行时,new FirstSubClass()
我在控制台中看到一个单值数组。当我new SecondSubClass()
再次运行时,我看到了一个单值数组。
但是,为什么当我再次运行它们时(即new FirstSubClass(); new SecondSubClass();
)然后我看到添加了数组而不是创建了新数组?
这里的理由是我正在创建一个类的新实例,因此为什么它们共享相同的私有财产?
我怎样才能避免这种情况,例如,当我这样做时,new FirstSubClass()
无论我创建类的新实例多少次,我都会看到一个值数组?