類數(shù)組定義:
? ??????????擁有l(wèi)ength屬性蔬螟,其它屬性(索引)為非負(fù)整數(shù)(對(duì)象中的索引會(huì)被當(dāng)做字符串來處理旧巾,這里你可以當(dāng)做是個(gè)非負(fù)整數(shù)串來理解)鲁猩;不具有數(shù)組所具有的方法,即不可以直接使用數(shù)組的方法廓握。
常見的類數(shù)組:
? ? ? ? ? ? arguments隙券、元素集合是尔、節(jié)點(diǎn)集合.....
類數(shù)組轉(zhuǎn)換為數(shù)組:
? ??????????Array.prototype.slice.call(arguments)? ? ?//得到一個(gè)值為arguments 的真正的數(shù)組
? ? ? ? ? ? 通過上面語句可以將類數(shù)組轉(zhuǎn)換為數(shù)組开仰,但為什么會(huì)這樣呢?我們先探討slice的實(shí)現(xiàn)吧:
? ? ? ? ? ? Array.prototype.slice = function () {
? ? ? ? ? ? ? ? ? ? var? ? arr = [ ];
? ? ? ? ? ? ? ? ? ? for (var i = 0;i<this.length;i++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? arr[arr.length] = this[ i ];
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? return? ? arr;
? ? ? ? ? ? }
? ? ? ? ? ? //上面就是slice的底層恩溅,同時(shí)我們知道call方法可以改變this指向脚乡,所以 通過call將slice方法中的this改為arguments就可以將arguments的值拷貝一份滨达,從而得到一組值與arguments值一樣的數(shù)組??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?