繁体   English   中英

如何静态声明其属性名称(又称键)包含破折号的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM