3 回答

TA贡献1777条经验 获得超3个赞
值得注意的是,当不是数组/字符串并且没有方法时,使用Array.prototype.slice.call(arr, 0)
overarr.slice()
不会抛出错误。arr
arr
slice
也许他们想要一个更健壮的实现,因此使用第一种方法。

TA贡献1862条经验 获得超7个赞
从签名我可以说 list.slice()[0] 与 Array.prototype.slice.call(list, 0) 完全不同,在前面的语句中你首先调用 list.slice 并访问它的第 0 个索引元素,在后面您正在调用 Array.slice 的语句将上下文作为列表的值传递,将 0 作为参数传递给切片函数。

TA贡献1895条经验 获得超7个赞
在我看来,Array.prototype.slice.call支持 Array-Like Objects,比如 NodeList 集合。
const divs = document.querySelectorAll('div')
divs.slice(0)
//Uncaught TypeError: divs.slice is not a function
Array.prototype.slice.call(divs, 0)
//(222) [div.ng-toast.ng-toast--right.ng-toast--bottom.ng-toast--animate-fade, ……
添加回答
举报