2014-12-01 78 views
3

當前我試圖使用方括號表示法設置對象的屬性。代碼如下奇怪的對象成員行爲node.js

var obj = {}; 
obj['c9c4d17a698ace65c80416112da3ff66e652ec013222f5b458a1dd4950580e77'] = 'one'; 
obj['8d207abeb95e36abfa2cdae6ac700e776c982ec64bcbfd501cb48fec55a13a77'] = 'two'; 

如果然後做一個console.log(obj)console.dir(obj)結果是

{ c9c4d17a698ace65c80416112da3ff66e652ec013222f5b458a1dd4950580e77: 'one', 
'8d207abeb95e36abfa2cdae6ac700e776c982ec64bcbfd501cb48fec55a13a77': 'two' } 

我想知道的是,爲什麼一個屬性鍵被設置爲不帶引號的文字和其他設置作爲一個字符串。它們都以相同的方式設置。我是否成爲鑰匙內某個逃生序列的受害者?

node --versionv0.10.33上運行OS X Yosemite 10.10.1

回答

2

你的任何對象密鑰以數字開頭的時候,它會出現在控制檯檢查時報價爲準。

這不影響任何內部表示。這些鍵總是字符串,按指定。只是當你檢查他們時,他們只會被引用(如他們包含保留字符或以數字開頭)。

+0

因此,與對象的接口對於兩者來說都是相同的,除非您不能使用以假定的數字開頭的點符號表示點符號? – 2014-12-01 21:56:40

+0

@ Edward-Lombe這是正確的。 – Brad 2014-12-01 21:57:45