如何在javascript中创建具有非法键名的对象? 我喜欢用JavaScript /NoDE.js创建一个对象,在键名的中间使用DASH。< /P>

如何在javascript中创建具有非法键名的对象? 我喜欢用JavaScript /NoDE.js创建一个对象,在键名的中间使用DASH。< /P>,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; 如何创建具有如下键的对象v

下面是我今天使用的一个数组,它需要转换为一个对象

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

如何创建键名中带有破折号的对象?-您已经完成了。那么,数组就是对象。您所要做的就是更改
新数组()
{}
以获得一个不是数组的对象。数组是一个对象,您可以在其上定义属性。但是,如果您不是出于数组目的使用它,那么您最好
data={}
data={{uuu type:'urn:…',applicationName:'test,…,'val name':'blah'}
回答标题中的问题:不可能,JS接受的任何键名都是合法的,不接受非法的名称,不管你怎么做,我都会把这行“可能行不通”改成“这可能不是你的意思”,然后把它变成一篇文章的链接,或者是一篇更好的文章(我没怎么看)。事实是,它可能会起作用,当您想要的是一个对象时,没有理由使用长度始终为0的数组。@Paulpro-足够公平。