我喜欢用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
我有几分钟空闲时间。所以,代码审查还在继续。
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';
接下来,现在,您将为数组分配键。这可能不是你的意思(这里是问题的总结;简而言之,有些收集方法会产生意想不到的结果)。您的意思可能是启动一个空对象,如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
被解释为"从data.val
的值中减去name
的值"而不是"访问对象data
的槽位val-name
"。