我想静态地声明Javascript对象(在使用时有时被称为“关联数组”),其属性名(“key”)包含破折号?
无破折号(工程):
myObject = {field_1:"aaa", field_2:"bbb"};使用破折号(结果导致语法错误):
myObject = {field-1:"aaa", field-2:"bbb"};(是的,我完全知道包含破折号只能使用“括号符号”而不是“点符号”引用。的这些属性,但这完全是另一回事,我在这里只讨论这样的对象的静态声明的情况。)
发布于 2016-11-05 01:39:50
您必须用引号将属性名称包装起来,才能将"field-1“作为字符串读取。
var myObject = {"field-1":"aaa", "field-2":"bbb"}
console.log(myObject["field-1"], myObject["field-2"])
//computed properties
var name1 = "field-1"
var name2 = "field-2"
var myObject = {
[name1]: "aaa",
[name2]: "bbb"
}
console.log(myObject["field-1"], myObject["field-2"])发布于 2016-11-05 02:45:36
在对象文本中,可以通过以下四种方式定义属性名称:
foo)42)'foo bar')[foo + 'bar'])field-1不是这两种人。它不是标识符,因为字符-在标识符名称中无效。要知道某物是否是有效的标识符名称相对容易:如果它不是关键字,也不是有效的变量名,则它不是有效的标识符名。也就是说,因为声明变量无效
var field-1 = 42;您也不能在对象文本中使用它。
您必须使用字符串文字代替。字符串文字可以包含任何字符序列:
myObject = {'field-1':"aaa"};https://stackoverflow.com/questions/40433940
复制相似问题