2012-05-07 16 views
4

我在MDN上看到了javascript代碼的一部分,我想知道如何在代碼之下工作,這是什麼意思?一個奇怪的json用法

var obj = { get x() { return 17; } }; 
+5

這不是JSON。 – AlienWebguy

+1

在這裏閱讀有關get運算符的所有信息:https://developer.mozilla.org/en/JavaScript/Reference/Operators/get –

回答

5

據我所知道的關鍵字get只是分類x()作爲一個getter,並出現自我調用。它在jScript(IE)中不受支持,它不是保留字。

你會引用它,像這樣:obj.x; // 17

在拉門的話來說,這些都將表現相同:

var foo = { get x() { return 17; } }; 
document.write(foo.x);​ // 17 

var bar = { x: function() { return 17; } }; 
document.write(bar.x());​ // 17 
+0

這不完全相同,'foo.x'和'bar.x()' –

+1

我說他們他們的表現完全相同,而不是他們的編碼完全相同。 – AlienWebguy

0

即指定一個getter x屬性,它無關JSON 。你很困惑,因爲JSON是一個JS對象的有效初始化器,但是並不是所有的JS初始化器都是有效的JSON。

該語法表示當您從obj.x讀取時,它將調用該函數來獲取其值。

1

var obj = { get x() { return 17; } };等於:

var obj = { 
    x: 17 
} 

或者也:

var obj = { 
    x: (function(){ 
     return 17; 
    })() 
} 

這意味着var obj聲明瞭一個對象,並get x() { return 17; }聲明的obj對象的屬性和具有的值是17:

var myVar = obj.x;//Equals to 17 
+0

這只是錯誤的...這是獲取/設置器的語法 –

+0

對不起,我已經編輯並修復了這篇文章。我想現在是正確的 –

+0

什麼「得到」是什麼意思? 。我的兩件事情不一樣。你可以從javascript控制檯看到'dir(obj)'。 –