在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)结果一样的原理是什么呢?
1 回答
![?](http://img1.sycdn.imooc.com/533e4c7b00013f3c02400205-100-100.jpg)
心有法竹
TA贡献1866条经验 获得超5个赞
因为arguments
只是一个类数组,不是数组,所以不存在slice
方法,而它的目的是用slice
返回一个新数组。
而对于补充问题,首先[]
自身没有slice
,因此往原型链上找slice
,然后他又是个Array
,所以就找到Array.prototype.slice
这两句话是一毛一样的。
添加回答
举报
0/150
提交
取消