2012-05-26 49 views
1

可能重複:
Self-references in object literal declarations前置對象JavaScript中的對象

嗨,

我有一個關於JavaScript對象一個小問題。 我在JavaScript中的下列對象:

var CONFIG = { 
    MAIN_URL: 'http://www.test.us', 
    MAIN_COLOR: '#fff' 
} 

現在我想聲明與其他對象的對象前綴:

var CONFIG = { 
    MAIN_URL: 'http://www.test.us', 
    LOGIN_URL: MAIN_URL+'/login', // <- this one! 
    MAIN_COLOR: '#fff' 
} 

怎麼做呢? 我曾與this.MAIN_URL試過,CONFIG [MAIN_URL],CONFIG.MAIN_URL - 但沒有工作?!?!

感謝, 薩沙

回答

6

你不能這樣做,在一個對象初始化。相反,做這樣的事情:

var CONFIG = {}; 
CONFIG.MAIN_URL = 'http://www.test.us'; 
CONFIG.LOGIN_URL = CONFIG.MAIN_URL+'/login'; // <- this one! 
CONFIG.MAIN_COLOR = '#fff'; 
+0

我喜歡你的方法......我喜歡:-) – codeworxx

4
var CONFIG = new function() { 
    this.MAIN_URL = 'http://www.test.us', 
    this.LOGIN_URL = this.MAIN_URL+'/login', // <- this one! 
    this.MAIN_COLOR = '#fff' 
}; 
+0

嗨Esailija,感謝您的快速響應。這工作:-)令人驚歎。再次感謝! – codeworxx

+0

@codeworxx:它的工作原理,但它創造比你需要更多的東西。只是'var CONFIG = {}; CONFIG.MAIN_URL = ...;'並且這樣是沒有更詳細的,並且避免了不必要的創建和運行的功能。 –

+0

@TJCrowder如果詳細程度是一個問題,那麼你就可以別名'this'的東西在功能上,這導致了一個更好的縮小以及和別名不會泄漏到當前範圍(全球似乎) – Esailija