2012-04-16 47 views
1
var my = {}; 

my["1"] = "tom"; 

my["2"] = "tony"; 

document.writeln(my["2"]); 

一個簡單的問題,叫什麼?我知道[]被稱爲arraylist,我可以對其執行my.indexOf()等,但這不適用於{}。javascript中調用{}的列表是什麼?

我在哪裏可以找到操作的列表,我可以列表與{}

+0

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create – malletjo 2012-04-16 16:05:15

+0

https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects ...你應該多讀一點。 – malletjo 2012-04-16 16:06:48

+0

好的,謝謝。在編碼方面完全是新的。 – RedHotScalability 2012-04-16 16:08:21

回答

2

具體地,在這種情況下,{}表示對象文字符號。這是語言的語法特徵,是創建Object的一種方式。

這...

var my = {}; 

...只需創建一個不直接擁有任何屬性的對象。

您可以使用相同的對象文字語法立即給出對象屬性。

var my = { 
    '1': 'tom', 
    '2': 'tony' 
}; 

用於創建空對象的等效代碼將使用Object構造函數...

var my = new Object(); 

您應該知道JavaScript中的對象是無序的。枚舉對象時,您給它的數字索引不能保證任何順序。爲了得到一個有序的循環,你需要獲得一個鍵的數組,然後對它們進行排序,然後遍歷數組。

例如...

var my_keys = Object.keys(my); 

my_keys.sort(function(a,b) { 
    return a - b; 
}); 

for (var i = 0; i < my_keys[i]; i++) 
    console.log(my[my_keys[i]]); 
5

{}執行被稱爲一個對象,並在你的宣言:

var my = {}; 

你只是創建一個空的對象,該對象你可以添加屬性。

使用[x]語法可以訪問這兩個數組和對象。陣列最適用於與數字索引順序訪問,如:

x[1] 
x[2] 

對象最好用於非連續串指標,如訪問:

my["autoSaveTime"] 
my.autoSaveTime 

有些人也認爲對象爲一的散列表或關聯數組,因爲它們通常可以用於其他編程結構的類似目的。

根據您在評論中詢問的問題,陣列有像.length.push().pop()等方法的屬性。物體不。 MDN是這方面的參考信息的很好的來源。這裏是MDN page on array methods,這裏是good overview on working with objects

對象沒有這些方法。因爲對象沒有對它們的命令,所以你只需分配給它們或者讀取它們或者迭代它們或者刪除一個屬性,因爲不需要像在數組中那樣嘗試改變它們的順序。

var x = my.autoSaveTime; 
my.autoSaveTime = 200; 
for (var key in my) { 
    var item = my[key]; 
    // do something with item or key here 
} 

要理解的一個棘手的事情是,一個數組實際上是從一個對象派生而來的,並添加了額外的數組功能。也就是說,一個數組也可以包含像對象一樣的名爲屬性的任意字符串,並具有對象所具有的所有通用方法。一個對象沒有數組功能和方法。所以,一個數組是一個對象的超集。

+0

噢,我在哪裏可以找到像Push,Pop,Length()這樣的屬性列表? – RedHotScalability 2012-04-16 16:05:46

+0

我在我的答案中添加了對數組方法的引用。 – jfriend00 2012-04-16 16:08:35