node.js的奇怪对象成员行为

时间:2014-12-01 21:49:42

标签: javascript node.js object

目前,我尝试使用方括号表示法设置对象的属性。代码如下

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

如果您执行console.log(obj)console.dir(obj),则结果为

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

我想知道的是为什么一个属性键被设置为不带引号的文字而另一个被设置为字符串。它们都以相同的方式设置。我是否成为钥匙内某些逃脱序列的受害者?

在OS X Yosemite 10.10.1

上,

node --versionv0.10.33

1 个答案:

答案 0 :(得分:2)

只要您的对象键以数字开头,它就会在控制台中检查时显示为引用。

这不会影响任何内部表示。这些键总是字符串,as-assigned。只是当你检查它们时,它们只会在需要时被引用(例如当它们包含一个保留字符或以数字开头时)。