扫码关注官方订阅号
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).
首先这段代码的目的是为了拿到参数里除第一个以外后面的所有参数,假如参数是个数组,那可以直接
arguments.slice(1, n) // 假设arguments 有n 个 // 可以简写成 arguments.slice(1) // 取第二个到最后一个
现在arguments 不是数组,所以不能直接调用slice方法,在JavaScript 中借用其它对象的方法可以通过apply或者call,以call为例,上述例子应该改写为:
slice
apply
call
// 需要借用的方法slice在Array.prototype 上,然后call接受两个参数,第一个是需要借用方法的对象,第二个是传进方法的参数,也就是1 Array.prototype.slice.call(arguments, 1) // 也可以写成 [].slice.call(arguments, 1)
apply方法与call方法是一样的,区别只是传参的形式,需要把方法参数按数组形式传进:
Array.prototype.apply(arguments, [1])
楼上回答正解,刚好还讲解了下call和apply的区别,大爱~
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
目的是得到方法的除一个参数的参数数组。
arguments 方法的所有参数,比如方法接收的参数是'abc',1,2,3,
则arguments为['abc',1,2,3].因为arguments并不是一个真正的数组,所以调用Array.prototype.slice来转化为一个数据,并传递参数[1].其实就类似于['abc',1,2,3].slice(1).
首先这段代码的目的是为了拿到参数里除第一个以外后面的所有参数,假如参数是个数组,那可以直接
现在arguments 不是数组,所以不能直接调用
slice方法,在JavaScript 中借用其它对象的方法可以通过apply或者call,以call为例,上述例子应该改写为:apply方法与call方法是一样的,区别只是传参的形式,需要把方法参数按数组形式传进:楼上回答正解,刚好还讲解了下call和apply的区别,大爱~