猿问

js call apply的使用

在js中正在学习call与apply,call有一个实际应用就是把类数组转换成数组。我有一个疑问,为什么要去call数组Array原型上的slice方法,我看了下slice的api,我想问下为什么要用Array.prototype上的这个方法呢?

 function fun(){    var argArr = Array.prototype.slice.call(arguments);
    debugger
 } fun(1,3,5,9)

再补问一个问题,[].slice.call(arguments) 与 Array.prototype.slice.call(arguments)结果一样的原理是什么呢?


温温酱
浏览 634回答 1
1回答

心有法竹

因为arguments只是一个类数组,不是数组,所以不存在slice方法,而它的目的是用slice返回一个新数组。而对于补充问题,首先[]自身没有slice,因此往原型链上找slice,然后他又是个Array,所以就找到Array.prototype.slice这两句话是一毛一样的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答