【问题标题】:Strange object member behaviour with node.jsnode.js 的奇怪对象成员行为
【发布时间】:2014-12-01 21:49:41
【问题描述】:

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

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

【问题讨论】:

    标签: javascript node.js object


    【解决方案1】:

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

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

    【讨论】:

    • 所以与对象的接口对于两者来说是相同的,除了你不能在以我假设的数字开头的那个上使用点表示法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多