javascript属性名称中是否允许使用破折号?
我正在考虑为jQuery创建一个简单的插件。在关于选项和设置的部分之后,我做了以下操作,但没有成功(脚本遇到设置时退出) 一旦我从背景色中删除了破折号,事情就正常进行了javascript属性名称中是否允许使用破折号?,javascript,Javascript,我正在考虑为jQuery创建一个简单的插件。在关于选项和设置的部分之后,我做了以下操作,但没有成功(脚本遇到设置时退出) 一旦我从背景色中删除了破折号,事情就正常进行了 var settings = { 'location' : 'top', 'backgroundColor': 'blue' // dash removed here } ... $this.css('backgroundColor', settings.backgroundColor); 是我遗漏了什么,还
var settings = {
'location' : 'top',
'backgroundColor': 'blue' // dash removed here
}
...
$this.css('backgroundColor', settings.backgroundColor);
是我遗漏了什么,还是jQuery文档出错了?否。解析器将其解释为减法运算符
您可以执行
设置['background-color']
更改设置。背景色
更改为设置['background-color']
变量不能包含
-
,因为它被读取为减法运算符。字符串中可以有破折号。如果您真的想保留该破折号,则必须使用括号和诸如此类的内容来引用该属性:
$this.css('backgroundColor', settings['background-color']);
破折号在javascript变量中不合法。变量名必须以字母、美元符号或下划线开头,后面可以跟同一个字母或数字。您可以执行以下操作:
var myObject = {
propertyOne: 'Something',
'property-two': 'Something two'
}
var result1 = myObject.propertyOne
var result2 = myObject['propertyOne']
var result3 = myObject['property-two']
我懂了。谢谢,这是我应该用的$css('backgroundColor',options['background-color']);我必须接受这个答案,因为它是正确的,并且在评论中包含了如此诙谐的玩笑。非常感谢@dan@大牛,为什么我们要用[]括号来访问它?因此,答案实际上是“是”。。。如上所示,属性名称中允许使用破折号。必须使用上面演示的方式访问它们,否则它们将被解释为减法运算符。请注意,您试图将
背景色
用作属性访问器,而不是变量。变量只能是标识符,属性访问器不那么严格,并且可以是标识符名称(不排除保留字)。但在这种情况下,背景色既不是标识符也不是标识符名称。但这不是一个变量。这在解码请求头和变量(如“内容类型”)时很重要。我正在使用请求模块,我需要知道内容类型。我可以使用response.headers['content-type']
var myObject = {
propertyOne: 'Something',
'property-two': 'Something two'
}
var result1 = myObject.propertyOne
var result2 = myObject['propertyOne']
var result3 = myObject['property-two']