2011-09-26 54 views
2

這可能看起來有點奇怪,但讓我詳細說明......我有一個對象的實例(z是本例中Bla的實例),它有一個其他對象(Bla2's)的列表,像這樣:數組的元素能夠知道JS中該數組的所有者是誰?

Bla = function() 
{ 
    this.array = [new Bla2(), new Bla2(), new Bla2()]; 
    this.x = 4; 
} 

Bla2 = function() 
{ 
    this.y = MYOWNER.x; //in this case, z is the owner 
} 

z = new Bla(); 
+2

如何定義「所有者」?一個數組可以被任何數量的其他對象所擁有的變量引用。 – cdeszaq

回答

5

默認情況下,沒有元素不知道哪個數組擁有它們。主要是因爲元素很容易包含在多個數組中。考慮以下

var x = new Bla2(); 
var array1 = [x]; 
var array2 = [x]; 

在這種情況下x處於因此2個陣列具有單一所有者屬性將是固有不正確。

如果特定情況允許但可以手動創建此關係。考慮以下內容

this.array = [new Bla2(), new Bla2(), new Bla2()]; 
for (var i = 0; i < this.array.length; i++) { 
    this.array[i].owner = this.array; 
} 
+0

謝謝,這是一個非常好的解釋!我會盡快接受你的回答(7分鐘)。 – corazza

+2

我想他是在數組項引用擁有數組的對象之後,而不是對數組的引用。如果是這樣的話,更好的選擇可能是在構造函數參數中傳遞引用,例如'[新的Bla2(這個),新的Bla2(這個),新的Bla2(這個)]'。 –

+0

是的,這是真的,jeez,我忘了我需要什麼......無論如何,這是一個很好的答案。 – corazza

相關問題