fe-interview
fe-interview copied to clipboard
[js] 第337天 解释下如下代码的意图:Array.prototype.slice.apply(arguments)
- 将arguments 类数组转换为数组
-
arguments
为类数组对象,并不是真正的数组。 -
slice
可以实现数组的浅拷贝 -
由于
arguments
不是真正的数组,所以没有slice
方法,通过apply
可以调用数组对象的slice方法,从而将arguments
类数组转换为数组
这个题目出的不太好 我想当然的认为arguments是一个形参了
function getArguments(){
//将参数转为一个数组
var args = Array.prototype.slice.apply(arguments);
console.log(args)
}
getArguments(11,12); // [11,22]
很明显的目的为,将函数内部可用的 arguments
对象 转化为一个真正意义上的数组
arguments是类数组对象, Array.prototype.slice.apply(arguments)则是将类数组转换为数组。
arguments是一个类数组对象,但是arguments原型链上没有slice方法,Array.prototype.slice.apply(arguments)数组上有slice方法,slice方法可接受一个类数组,通过apply来将this指向arguments