[].slice.call()將類數組轉化爲真正的數組

JavaScript slice() 方法:

定義:

從數組中切割指定元素,返回新的一個數組

語法:(左閉右開)

arrObject.slice(start,end);
參數 描述
start 必需。規定從何處開始選取。如果是負數,那麼它規定從數組尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。
end 可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那麼切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。

 

返回值:

返回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。

function test() {
    return  [].slice.call(arguments)
}
var list = test(4, 5, 6) // [4,5,6]
[].slice === Array.prototype.slice; // true

在上面的例子中我們通過call()將[].slice中的this指向了arguments,使其擁有了slice方法。slice()如果不傳參則是從第0項開始截取到length-1項並返回截取後的數組[4,5,6]上面其實就是省略了call()的第二個參數,你可以把它看作爲[].slice.call(arguments,0);

var arrayLike = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3
}

[].slice.call(arrayLike);//[a,b,c]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章