节点.js的奇怪对象成员行为

Strange object member behaviour with node.js

本文关键字:成员 对象 js 节点      更新时间:2023-09-26

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

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

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

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

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

node --version在OS X Yosemite 10.10.1上v0.10.33

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

这不会影响任何内部表示形式。 这些键始终是已分配的字符串。 只是当您检查它们时,它们只会在需要时被引用(例如当它们包含保留字符或以数字开头时)。