Подтвердить что ты не робот

Разрешены ли тире в именах свойств javascript?

Я смотрел http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options, чтобы создать простой плагин для jQuery. Следуя разделу о параметрах и настройках, я сделал следующее, которое не сработало (script quit, когда он столкнулся с настройкой).

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?

4b9b3361

Ответ 1

нет. синтаксический анализатор будет интерпретировать его как оператор вычитания.

вы можете сделать settings['background-color'].

Ответ 2

Измените settings.background-color на settings['background-color'].

Переменные не могут содержать -, потому что это считывается как оператор вычитания.

Ответ 3

Дрифты не являются законными в переменных javascript. Имя переменной должно начинаться с буквы, знака доллара или символа подчеркивания и может сопровождаться тем же или числом.

Ответ 4

У вас могут быть тире в строках. Если вы действительно хотели сохранить эту тире, вам нужно будет ссылаться на свойство, используя скобки и еще что-то:

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

Ответ 5

Вы можете сделать что-то вроде этого:

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

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