2013-07-12 31 views
1

我在學習Backbone.js,因爲我覺得它會在我的項目中得心應手。Backbone.js:class inizialization之間的區別 - JSON格式

我跑通不同的教程,我不能的找到像一類的差異,最好聲明:

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

注意:*不是* 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