如何静态声明一个属性名(键)包含破折号的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对象(有时被称为"关联数组"当这样使用时),其属性名称("键")包含破折号?
不带破折号(works):
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"};
相关文章:
- Javascript 如果字符串包含空格,则用破折号替换空格
- JavaScript 正则表达式在日期、破折号等上
- 如何在Javascript中去除破折号分隔字符串的最后一个元素
- 如何在javascript中创建一个像小部件一样的破折号对象
- 在Javascript的get-Cookie中获取破折号后的值
- XSLT JavaScript:尝试使用包含破折号的名称定义函数时出错
- 为什么不't这个简单的javascript替换将破折号改为斜杠
- javascript Regex trim高达'空格'和'破折号'或匹配
- 如何正确地在javascript中的对象键中包含破折号
- 如何静态声明一个属性名(键)包含破折号的Javascript对象实例(关联数组)?
- Javascript正则表达式,在每3和4个字符后添加破折号
- 需要javascript regex允许数字,单个和特定的alpha数字字符和破折号
- 用破折号分隔并以年份开头时出现Javascript Date.parse错误
- 使用Javascript更改以破折号开头的css属性
- 在Javascript中删除字符串之间的破折号并大写字符串
- 无法读取id与点和破折号字符在javascript
- JavaScript 区分破折号吗?
- 获取开头除破折号以外的所有内容 - javascript 中的正则表达式
- 在Javascript中,为什么'-' === '-'的计算结果为true?并且是破折号 (-) js 字符串中的转
- JavaScript破折号抛出ReferenceError