我使用原型繼承並希望擁有實例數組的對象。所以如果我用一個實例數組從一個對象派生出一些對象並訪問這個數組,所有這些對象都共享這個數組。我想推動一些東西到數組中,只改變實際對象中的數組,而不是所有其他數組。原型繼承和實例數組的問題
使用標準原型繼承和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
我想用Object.create – Peterfia 2010-07-28 15:06:50
使用原型繼承。您仍然可以使用object.create。但是你必須運行構造函數來初始化帶有實例變量this.data的對象。 var one = Object.create(ObjectName.prototype); ObjectName.call(one); one.add(1); – Marco 2010-08-15 00:34:42