是否允许在javascript属性名称中使用破折号?

时间:2011-04-01 16:22:49

标签: javascript

我在看http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options为jQuery创建一个简单的插件。在关于选项和设置的部分之后,我执行了以下操作,但这些操作无效(脚本在遇到设置时退出)。

var settings = {
    'location' : 'top',
    'background-color': 'blue'
}
...
$this.css('backgroundColor', settings.background-color); // fails here

一旦我从背景颜色中移除了短划线,一切正常。

var settings = {
    'location' : 'top',
    'backgroundColor': 'blue' // dash removed here
}
...
$this.css('backgroundColor', settings.backgroundColor); 

我错过了什么,或者jQuery文档错了吗?

5 个答案:

答案 0 :(得分:98)

没有。解析器会将其解释为减法运算符。

你可以settings['background-color']

答案 1 :(得分:16)

settings.background-color更改为settings['background-color']

变量不能包含-,因为它被作为减法运算符读取。

答案 2 :(得分:8)

破折号在javascript变量中不合法。变量名必须以字母,美元符号或下划线开头,后跟相同或数字。

答案 3 :(得分:3)

你可以在字符串中使用破折号。如果你真的想保留那个破折号,你必须使用括号和诸如此类的东西来引用该属性:

$this.css('backgroundColor', settings['background-color']);

答案 4 :(得分:0)

您可以执行以下操作:

var myObject = {
  propertyOne: 'Something',
  'property-two': 'Something two'  
}

var result1 = myObject.propertyOne
var result2 = myObject['propertyOne']
var result3 = myObject['property-two']