Есть ли разница между цитированными и некотируемыми именами/именами объектов JavaScript?
Например, в чем разница между этими двумя:
var obj1 = {
property1 : "Value 1",
method1 : function() {
return true;
}
};
var obj2 = {
"property1" : "Value 1",
"method1" : function() {
return true;
}
};
Ответ 1
В JavaScript нет никакой разницы. Однако вам придется указывать имена свойств, которые являются зарезервированными словами (например, class
), или именами, которые содержат недопустимые символы (например, first-name
).
Ответ 2
До ES 3 вам нужно указать зарезервированные слова языка (новый, по умолчанию, класс, и т.д.). Однако в новой версии это будет лишним.
Но так как ES 5 еще недостаточно поддерживается, вам нужно придерживаться всех зарезервированных слов.
Если вы не хотите запоминать полный список слов, вам лучше всего процитировать все.
Дополнительно: поэтому у вас нет свойств float
и class
для элемента. Вместо этого вы должны использовать cssFloat/styleFloat
и className
.
Другое дополнение - вам нужно процитировать каждый ключ в строке JSON. Причина в том, что они хотели, чтобы он был независимым от языка, чтобы не вмешиваться в такие глупые ограничения, как в ES3.