![](/img/trans.png)
[英]is “->” in php similar (a.k.a equivalent) to “.” in javascript?
[英]How can I statically declare a Javascript object instance (a.k.a “associative array”) whose property names (a.k.a keys) contain dashes?
我想静态声明其属性名称(“键”)包含破折号的Javascript对象(有时被称为“关联数组”)。
不带破折号(有效):
myObject = {field_1:"aaa", field_2:"bbb"};
带破折号(导致语法错误):
myObject = {field-1:"aaa", field-2:"bbb"};
(是的,我完全意识到,这样的包含破折号的属性只能通过使用“括号表示法”而不是“点表示法”来引用 ,但这完全是另一回事,我只是在谈论静态声明的情况)。这样的对象。)
您必须将属性名称用引号引起来,以将“ 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"])
在对象文字中,可以通过四种方式定义属性名称:
foo
) 42
) 'foo bar'
) [foo + 'bar']
) field-1
都不是。 它不是标识符,因为字符-
在标识符名称中无效。 知道某个东西是否为有效的标识符名称相对容易:如果它不是关键字,也不是有效的变量名称,那么它也不是有效的标识符名称。 也就是说,由于声明变量是无效的
var field-1 = 42;
您也不能在对象文字中使用它。
您必须改用字符串文字 。 字符串文字可以包含任何字符序列:
myObject = {'field-1':"aaa"};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.