如何使用非法密钥名称在javascript中创建对象?

时间:2015-09-18 17:30:06

标签: javascript node.js

我喜欢在密钥的名称中间使用带有破折号的javascript / node.js创建一个对象。

这是我今天使用的一个需要转换为对象的数组。

var data = new Array();
data['__type'] = 'urn:inin.com:connection:icAuthConnectionRequestSettings';
data['applicationName'] = 'test';
data['userID'] = 'blah';
data['password'] = 'blah;
data['val-name'] = 'blah;

如何使用像val-name这样的键创建对象?

1 个答案:

答案 0 :(得分:2)

我有几分钟的时间。因此,代码审查会继续下去。

var data = new Array();
data['__type'] = 'urn:inin.com:connection:icAuthConnectionRequestSettings';
data['applicationName'] = 'test';
data['userID'] = 'blah';
data['password'] = 'blah;
data['val-name'] = 'blah;

首先,我认为您在此代码中有一些印刷错误。最后两个值有奇怪的配对引号。

var data = new Array();
data['__type'] = 'urn:inin.com:connection:icAuthConnectionRequestSettings';
data['applicationName'] = 'test';
data['userID'] = 'blah';
data['password'] = 'blah';
data['val-name'] = 'blah';

接下来,您现在正在为数组分配密钥。这可能不是你的意思(问题摘要here;简短版本是一些收集方法会给你意想不到的结果)。您可能意味着以data开始一个空对象。

var data = {};
data['__type'] = 'urn:inin.com:connection:icAuthConnectionRequestSettings';
data['applicationName'] = 'test';
data['userID'] = 'blah';
data['password'] = 'blah';
data['val-name'] = 'blah';

最后,您可以在JS中使用数据文字,而不是使用序列赋值。

var data = {
    '__type': 'urn:inin.com:connection:icAuthConnectionRequestSettings',
    'applicationName': 'test',
    'userID': 'blah',
    'password': 'blah',
    'val-name': 'blah'
}

作为其中一部分,您已创建了一个插槽名称中包含-的对象。对此没有任何违法行为,但它确实阻止您使用点符号访问该插槽。

console> data['val-name']
'blah'
console> data.val-name
NaN

这与密钥是非法的无关,而且所有与访问被解析为减法有关。也就是说,data.val-name被解释为"从name"的值中减去data.val的值。而不是"访问对象val-name"的广告位data