Array.prototype.slice.apply(arguments,[1])是如何执行的,目的是什么?
Array.prototype.slice.apply(arguments,[1])是如何执行的,目的是什么?
目的是得到方法的除一个参数的参数数组。
arguments 方法的所有参数,比如方法接收的参数是'abc',1,2,3,
则arguments为['abc',1,2,3].因为arguments并不是一个真正的数组,所以调用Array.prototype.slice来转化为一个数据,并传递参数[1].其实就类似于['abc',1,2,3].slice(1).
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答855 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
首先这段代码的目的是为了拿到参数里除第一个以外后面的所有参数,假如参数是个数组,那可以直接
现在arguments 不是数组,所以不能直接调用
slice
方法,在JavaScript 中借用其它对象的方法可以通过apply
或者call
,以call
为例,上述例子应该改写为:apply
方法与call
方法是一样的,区别只是传参的形式,需要把方法参数按数组形式传进: