2015-05-12 51 views
0

我知道我可以做靜態對象中靜態對象,例如:如何在JavaScript中的靜態對象內創建實例對象?

aaa: { 
    bbb: {} 
    ccc: {} 
} 

但我想使我能有實例化的對象,這樣的:

aaa: { 
    bbb = function(yyy): { 
     this.variable // this one will be belong to aaa(parent object) instead of an instance of bbb 
    } 
    ccc = function(ooo) { 
    } 
} 

能不能做到?

+0

不知道,但我不認爲它是「邏輯上」有用..難道BBB和CCC份額的東西嗎?是不是更容易爲他們創建一個類,並將兩個對象聲明爲bbb和ccc?此外,它會稍微維持一點。 – briosheje

+0

看看我的答案中的代碼是你正在尋找的。 – Harish

回答

0

根據定義靜態圖沒有「this」引用,因爲這將解決特定實例。從本質上講,你可以實現你試圖做這樣的:

aaa: 
{ 
    bbb: (function() 
    { 
     aaa.variable = 'something'; 
    })(), 

    ccc: 
    { 

    } 
} 

注意的BBB這裏的值是(自執行)功能(空)的返回值。似乎有點奇怪的做法雖然,會建議儘可能reorgainising

0

試試這個。但是,「bbb」中的「this」只會引用bbb對象。如果你想引用aaa,因爲aaa是一個靜態對象,你可以使用aaa.x表示法。

var aaa = { 
    bbb: function(x) { 
     this.x = x; 
     aaa.x = x; 
    }, 
    ccc: function(y) { 
     this.y = y; 
    }, 
    x: 10, 
    y: 20 
}; 

console.log(aaa.x);  // 10 
var newB = new aaa.bbb(50); 
console.log(newB.x);  // 50 
console.log(aaa.x);  // 50 
0

好吧,解決它的解決方案是使用「新對象」thingy。

all: 
{ 
    Aaa: 
    { 
     create: function(yyy) 
     { 
      aaa = new Object(); 
      aaa.variable = value; 
      return aaa; 
     } 
    } 
} 

感謝所有試圖幫助:)