2013-07-24 36 views
4

我在Stackoverflow上看到類似於我的問題,但大多數人只是簡單地提供了各種各樣的解決方法,我不在尋找。JSON引用之前的屬性

我想在我的JSON的屬性,以便能夠參考的一屬性在同一個對象:

var x = { 
    a : 1, 
    b : a + 1 
}; 

我試過b : this.a + 1,但不起作用。

爲什麼我不能用「a」來定義「b」?再次,我不在尋找解決方法,只是瞭解和理解。

謝謝

回答

3

你不能那樣做。當你創建一個對象時,它和它的屬性在語句完成之後纔會存在。您不能在創建時引用該對象或其屬性。

你可以這樣說:

var x = {a: 1}; 
x.b = x.a + 1; 

附:這是而不是 JSON。這是一個JavaScript對象。 JSON是數據的字符串表示,它恰好與JavaScript語法非常相似。 var x = {a: 1}是一個對象,'{"a": 1}'(字符串)是JSON。

0

this是全局對象,所以在您的示例中,它沒有a屬性。

你可以看到一個簡單的例子在你的瀏覽器控制檯

var object = { test: this }; 
console.log(object); 

你會認爲本身是objectWindow對象。