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