2014-02-20 13 views
1

進出口編碼BackboneJS示例應用程序的語法如下什麼和[]在JavaScript

<script type="text/javascript"> 
    var object = []; 

    _.extend(object, Backbone.Events); 
    object.on("alert", function(msg) 
    { 
     console.log("Your name is: "+msg); 
    }); 

    object.trigger("alert","Sarah"); 
</script> 

我注意到,如果變量是這樣

var object = {} 
定義的應用程序工作之間{差別}

兩者有什麼區別?

哦我發現這個例子 http://eloquentjavascript.net/chapter4.html

{}用來傳遞JSON這樣

var cat = {colour: "grey", name: "Spot", size: 46}; 

[]僅僅是一個陣列

var cat = ["color one", "color two", "color three"]; 

感謝

+4

呃......一切? –

+0

{}並不嚴格用於JSON。它通常用於實例化JavaScript對象,但我理解這種混淆。 – spassvogel

+0

@NiettheDarkAbsol:不完全一切。兩者都是對象(儘管其中一個是特殊的'Array'對象)。 – Bergi

回答

4

字面數組是零個或多個表達式,其中的每一個 表示一個數組元素,包含在方括號([列表] )。

對象文本是({}的零個或多個對屬性名稱 和物體的相關聯的值,大括號括起來的列表)。

+0

所有答案都很好,但是這個是最好的 –

3

在short:[]是一個數組,{}是一個對象。

[] is shorthand for new Array() 
{} is shorthand for new Object() 

基本上,一個數組也是一個對象,但增加了功能。但是,不鼓勵使用Array作爲散列表(所以,使用字符串作爲訪問器)。

此外,在你的代碼中,數組似乎被擴展爲具有某種事件機制。我個人會使用一個對象而不是一個數組,但我想這是有原因的?

var object = []; 
_.extend(object, Backbone.Events); 
object.on("alert", function(msg) 
{ 
    console.log("Your name is: "+msg); 
}); 

object.trigger("alert","Sarah"); 
+0

謝謝,實際上沒有這個原因,原始代碼也是用「{}」編碼的 –