我喜欢在密钥的名称中间使用带有破折号的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
这样的键创建对象?
答案 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
。