JavaScript中,數組是一個特殊的對象,其property名為正整數,且其length屬性會隨著數組成員的增減而發生變化,同時又從Array構造函數中繼承了一些用於進行數組操作的方法。而對於一個普通的物件來說,如果它的所有property名均為正整數,同時也有相應的length屬性,那麼雖然該物件並不是由Array建構函數所創建的,它依然呈現出數組的行為,在在這種情況下,這些物件被稱為「類別數組物件」。以下是一個簡單的類別數組物件:
var o = {0:42, 1:52, 2:63, length:3}
console.log(o);
與普通物件不同的是,類別數組物件擁有一個特性:可以在類別數組物件上應用數組的操作方法。例如,在ECMAScript 5標準中,可以用以下方法將上面的物件o合併成字串:
console.log(Array.prototype.join.call(o));//"42,52,63"
也可以在類別數組物件上使用slice()方法取得子數組:
console.log(Array.prototype.slice.call(o, 1, 2));//[52]
在瀏覽器環境中,document.getElementsByTagName()語句傳回的就是一個類別數組物件。在function呼叫中,function程式碼內的arguments變數(保存傳入的參數)也是一個類別數組物件。
在ECMAScript 5標準中,字串string就是一個唯讀的類別數組物件:
var s = "History";
console.log(s[3]);//t
console.log(Array.prototype.join.call(s, " "));//H i s t o r y