我使用原型(prototype)继承并希望拥有带有实例数组的对象。因此,如果我使用实例数组从一个对象派生一些对象并访问该数组,那么所有对象都会共享该数组。我想将某些内容推送到数组中,并且只更改实际对象中的数组,而不更改所有其他对象中的数组。
使用标准原型(prototype)继承和 Object.create 来解决此问题的优雅解决方案是什么?
var sys = require('sys');
var obj ={
data: [],
add: function(what){
this.data.push(what)
}
};
var one = Object.create(obj);
one.add(1);
var other = Object.create(obj);
other.add(2);
sys.puts(other.data.length); // is 2, but should be 1
最佳答案
var ObjectName = function(){
this.data = [];
}
ObjectName.prototype.add = function(what){
this.data.push(what);
};
var one = new ObjectName();
one.add(1);
关于javascript - 原型(prototype)继承和实例数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354143/