首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何静态地声明Javascript对象实例(即.一个“关联数组”),其属性名(即.a键)包含破折号?

如何静态地声明Javascript对象实例(即.一个“关联数组”),其属性名(即.a键)包含破折号?
EN

Stack Overflow用户
提问于 2016-11-05 01:33:20
回答 2查看 50关注 0票数 1

我想静态地声明Javascript对象(在使用时有时被称为“关联数组”),其属性名(“key”)包含破折号?

无破折号(工程):

代码语言:javascript
复制
myObject = {field_1:"aaa", field_2:"bbb"};

使用破折号(结果导致语法错误):

代码语言:javascript
复制
myObject = {field-1:"aaa", field-2:"bbb"};

(是的,我完全知道包含破折号只能使用“括号符号”而不是“点符号”引用。的这些属性,但这完全是另一回事,我在这里只讨论这样的对象的静态声明的情况。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-05 01:39:50

您必须用引号将属性名称包装起来,才能将"field-1“作为字符串读取。

代码语言:javascript
复制
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"])
票数 3
EN

Stack Overflow用户

发布于 2016-11-05 02:45:36

在对象文本中,可以通过以下四种方式定义属性名称:

  • 作为标识符名 (foo)
  • 作为数字文字(42)
  • 作为字符串文本('foo bar')
  • 作为计算属性([foo + 'bar'])

field-1不是这两种人。它不是标识符,因为字符-在标识符名称中无效。要知道某物是否是有效的标识符名称相对容易:如果它不是关键字,也不是有效的变量名,则它不是有效的标识符名。也就是说,因为声明变量无效

代码语言:javascript
复制
var field-1 = 42;

您也不能在对象文本中使用它。

您必须使用字符串文字代替。字符串文字可以包含任何字符序列:

代码语言:javascript
复制
myObject = {'field-1':"aaa"};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40433940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档