2014-07-23 67 views
0

我需要知道爲什麼這不起作用。我的Javascript代碼訪問對象中的變量。但它似乎沒有工作,部分原因是我無法弄清楚語法。JavaScript調用對象語法

var obj = { 
     size:"small", 
     big:false, 
     thing:true 
    } 

    alert(obj[size]); 

我只是不知道如果我的語法正確的...

+0

您正在訪問該對象的一個​​*屬性** – BeNdErR

+1

也是,問題標記爲'node','alert'在'node'中不可用。改用'console.log'。 –

回答

0

您可以參考對象的值或者通過:

obj["size"] 

obj.size 

但是,有一個例外。舉例來說,如果你有以下對象與數字鍵(注:關鍵還是即使它是這樣定義的字符串):

var obj = { 
    1: true 
}; 

只能通過檢索它的值:obj["1"]

因此,使用obj.1將導致語法錯誤。

因此,如果您將其更改爲例如:alert(obj["size"]);,但我更願意使用console.log(obj["size"]);進行調試,則該代碼有效。至少,如果你正在玩node.js,就像你的標籤所指示的那樣。

乾杯。

1

這將在這裏工作。

obj.size //returns small 

OR

obj["size"] //returns small 

OR

var my_var = "size" 
obj[my_var] //returns small 
+2

準確。當你執行'obj [size]'時,它試圖使用名爲「size」的變量的值作爲對象的索引(這是一個潛在的有用的事情,但不是你想要的)。 –