可能重複:
Self-references in object literal declarations引用在{}對象創建其他屬性
如何做到以下幾點:
var object = {
alpha: 'one',
beta: **alpha's value**
}
不分割的對象創建成兩部分?
可能重複:
Self-references in object literal declarations引用在{}對象創建其他屬性
如何做到以下幾點:
var object = {
alpha: 'one',
beta: **alpha's value**
}
不分割的對象創建成兩部分?
你不能,對象文字語法只是不支持這一點,你必須創建一個變量,第一然後用其來進行,就像這樣:
var value = 'one';
var object = {
alpha: value,
beta: value
};
或者......完全的東西不同,但在做beta
時不能引用alpha
,因爲這兩個屬性都尚未創建,直到對象語句作爲整體運行纔可訪問。
..我得到「o未定義」 – Nick 2010-08-02 21:54:16
@BrunoLM - Nope:http://jsfiddle.net/nick_craver/Gnbjq/當你嘗試使用它時,'o'是'undefined'。 – 2010-08-02 21:56:06
您無法通過{}
創建對象。
你不能,如上所述。最相近的是:
var object = new (function()
{
this.alpha = 'one';
this.beta = this.alpha;
})();
這使用從匿名函數創建的單例實例。您也可以使用var
聲明專用字段。
另一個想法換一種方式來創建對象,而不會干擾任何新變量的作用域:
var lit = function(shared) {
return {
alpha: shared.v1,
beta: shared.v2,
gamma: "three",
delta: shared.v1
};
}(
{
v1: "one",
v2: "two",
}
);
一個你所不知道如何縮進語句....
嗯..太臭了。我試圖將枚舉類型添加到我的對象,如var對象= {CURVETYPE:{DIRECT:0,ROAD:1},travel:this.CURVETYPE.DIRECT},但我可以看到這將毀掉我現在很好的命名空間。 .. – Nick 2010-08-02 21:53:14