2013-07-12 2 views
1

Я изучаю Backbone.js, поскольку я чувствую, что это пригодится для моих проектов.Backbone.js: разница между классом инициализации - JSON Format

Я бегу через различные учебники, и я не могу найдем разницу и лучшее признание для класса, как:

Person = Backbone.Model.extend({ 
    defaults: { 
     name: 'Andy', 
     age: 25, 
     occupation: 'Whatever...' 
    } 
}); 

это лучше инициализации класса так:

var me = new Person({name: 'Andy'}); 

или

var me = new Person({'name': 'Andy'}); 

Почему я должен использовать одинарные кавычки для установки переменной? Это занимает больше времени, но что лучше? Что правильно и почему? Я не уверен, что это только вопрос JSON, или если он является основой, поскольку на самом деле это вопрос инициализации и использования фигурных скобок. В случае, если я использую .set(var, value), а переменная не имеет кавычек, генерирует ошибку, так как ищет переменную.

Я пробовал искать на сайте Backbone.js и сайте JSON, но не могу найти ответ на этот вопрос.

+2

NB: Это * не * JSON (это формат данных) - это литерал объекта JavaScript. Здесь различаются различия, поскольку правила разные - в JSON требуются ключи с двойными кавычками, но, как указывает @McGarnagle, для объектных литералов JS не требуются ни двойные, ни одинарные кавычки. – nrabinowitz

ответ

2

Если мы педантичны, то действительный JSON требует одиночных кавычек для всех ключей. Например, JSLint отклонит JSON без кавычек.

Но в Javascript они не нужны, и большинство людей их оставляют (как вы отметили, это более кратким). То есть, если у вас нет зарезервированных символов в имени, например - и т. Д. Так, например, { name: 'Andy' } в порядке, но { first-name: 'Andy' } заставит анализатор сломаться.

+2

См. Мою заметку о JSON выше. Кроме того, стоит отметить, что неучтенные зарезервированные слова также являются плохими новостями: '{if:" spam "}' - синтаксическая ошибка. – nrabinowitz

+0

@nrabinowitz Получил это. Даже если это имеет смысл полностью, я пробовал, если и не дает мне никакой ошибки. Возможно? –

+1

он не даст вам ошибки, если вы завернете его в кавычки. Без кавычек большинство парсеров JS будут вызывать синтаксическую ошибку – nrabinowitz

Смежные вопросы