2013-03-26 69 views
0

考慮以下對象:傳遞父母和孩子之間的構造

Parent = (function() { 
    function Parent(child) { 
    this.child = child; 
    } 
    return Parent; 
})(); 

Child = (function() { 
    function Child(name, parent) { 
    this.name = name; 
    this.parent = parent; 
    } 
    return Child; 
})(); 

有沒有一種方法來創建一個語句中的父母和孩子? (帶有適當參考父母子女)

排序是這樣的:

var parent = new Parent(new Child("john", thisThatPointsToTheNewParent)); 

這只是爲了顯示我後。我知道我可以分別創建孩子和父母,然後稍後更新孩子的參考資料,但在我的情況下,如果我可以一次完成,就會更容易。有沒有辦法?

+0

嘗試單獨創建它們的你會看到在您的設計缺陷:

var Parent = function (name, referenceToChild) { function Parent(name, child) { this.name = name; this.child = child; child.parent = this; return this; } return new Parent(name, referenceToChild); }; var Child = function (name) { function Child(name) { this.name = name; this.parent = parent; return this; }; return new Child(name); }; var parent = new Parent("Tom", new Child("john")); 

與結束。 – Musa 2013-03-26 05:25:43

+0

這看起來像是繼承錯誤的嘗試......你想要在這裏完全做什麼? – elclanrs 2013-03-26 05:25:59

+0

我正在創建一個父數組,用作頁面上的數據。我通過連接控制器上的一個字符串「new Parent(...),」來實現。寫完這篇評論之後,我認爲我可以沒有參考,但我仍然想知道是否有可能,以防萬一。 – Manuel 2013-03-26 05:42:00

回答

0

這是可能的,但你最終會得到循環引用,因爲子引用父和父引用子。這是實現你要找的一行代碼的一種方式:

{       // Parent 
name: "Tom", 
child: {     // Child 
    name: "john", 
    parent: {    // Parent 
     name: "Tom", 
     child: {   // Child 
      name: "john", 
      parent: {  // Parent 
       ....