2011-07-11 23 views
3

我正在用不同的方式來構建代碼,並且我很難識別創建對象的方式之間的差異。有沒有簡明扼要的參考資料來閱讀這些內容?瞭解創建JavaScript對象的不同方式

在下面的例子中,我可以用同樣的方法引用subclass1和subclass2,它們看起來行爲相同。但是我知道JS中的所有內容都是有原因的。有什麼區別,我應該什麼時候使用一種風格與另一種風格?

非常感謝!

var ParentObj = { 
    'subclass1' : { 
     group1 : { 
      'property1' : 'val1', 
      'property2' : true, 
      'property3' : 'val3' 
     }, 
     group2 : { 
      'property1' : 'val1', 
      'property2' : true, 
      'property3' : 'val3' 
     } 
    } //end first subclass 
    subclass2 : { 
     group1 : 'sharepoint', 
     specialstuff: { 
      specprop1: ["some settings", "some more settings", "lots of settings", "maybe a switch", "etc etc etc"], 
      specprop2 : 'some plain text message' 
     } 
    } 
}; //end ParentObj 
+2

什麼是真正的問題?你想知道報價嗎?如果你想了解對象:https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects –

回答

0

唯一的區別是,你可以使非有效符號的名字那樣:

var x = { 'some text': { prop1: true } }; // Valid 
var x = { some text: { prop1: true } }; // Invalid 

你只能夠訪問通過索引(又名x['some text']),但它的作品。

1

您當前使用的語法是Object Literal語法,並且根據您在此顯示的內容完全可以接受。如果您達到了需要將成員函數添加到多個課程的點,則您需要閱讀Prototypal Inheritance。否則,你做得很好IMO。

+0

感謝您的鏈接 – patrickgamer

0

在聲明屬性與這種類型的語法:

var myObject = {group1 : 'sharepoint'}; 

您必須使用屬性名的任何時候周圍的引號不是合法的JavaScript變量名。這將包括任何時候它包含空格,以數字開頭或包含任何其他字符,這些字符在JavaScript變量名稱中不合法(例如+ - * & ^%)。總是包含引號是安全的。如果屬性名稱是安全的,則不需要引號。

下面是對什麼類型的名稱需要引號的解釋:http://www.codelifter.com/main/tips/tip_020.shtml。如果您不確定,請使用引號。如果您希望保持一致,請始終使用引號或從不使用引號,並且絕對不要使用非法定JavaScript變量名稱的標識符。你的選擇。

+0

實際上使用數字作爲關鍵是好的,'{42:'answer'}'將工作。 –

+0

但現在允許混合的數字和字母。所以'var y = {4zz:「zoo」};'不起作用。國際海事組織,最好遠離邊緣情況,要麼總是使用引號或始終使用安全名稱。 – jfriend00

+0

夠公平:)。 –

1

假設你的意思是創建對象文字和它們的關鍵字的不同方式,用引號括住關鍵字是最好的方法。有很多原因:

答:如果你想給這個鍵一個比一個單詞,一個符號或其他字符更長的名字,你必須使用引號。

var obj = {"some name": 1337, "¤": "š"}; 
alert(obj["some name")); // Shows "1337" 
alert(obj["¤"]); // Shows "š" 

B:使用引號可以使用保留字。沒有它們,如果密鑰的名稱是保留字,密鑰可能無法訪問。

var obj = {"class": 10}; // "Class" is a reserved word 
alert(obj["class"]); // Shows "10" 
// Using "obj.class" might give unexpected errors in some browsers 

C:始終用書將幾乎意味着它的JSON準備好了,如果需要的話。

+0

C:好點!謝謝。 – patrickgamer