Array.prototype.slice.call(arrayLike)
首先Array.prototype.slice.call(arrayLike)的結(jié)果是將arrayLike對(duì)象轉(zhuǎn)換成一個(gè)Array對(duì)象晾虑。所以其后面可以直接調(diào)用數(shù)組具有的方法袱饭。譬如
Array.prototype.slice.call(arrayLike).forEach(function(element,index){ //可以隨意操作每一個(gè)element了 })
解析點(diǎn)1:Array.prototype.slice表示數(shù)組的原型中的slice方法。注意這個(gè)slice方法返回的是一個(gè)Array類型的對(duì)象(這句話很多分析的文章沒有點(diǎn)破于樟,我就問了憑什么非得是slice啊?原因就在這)。splice行不行呢浅侨?Array.prototype.splice.call(arrayLike,0)這種形式也可以亚脆。只要返回的是原數(shù)組就可以祷肯。當(dāng)然寥假,那種寫法更省事一目了然市框。
解析點(diǎn)2:能調(diào)用call的只有方法,所以不能用[].call這種形式糕韧,得用[].slice枫振。而call的第一個(gè)參數(shù)表示真正調(diào)用slice的環(huán)境變?yōu)榱薬rrayLike對(duì)象。所以就好像arrayLike也具有了數(shù)組的方法萤彩。