Array.prototype.splice.call(arguments)方法是将arguments转化为数组,此方法可以将带有length属性的对象转化为数组
解析
- 首先普通数组的调用方式为:Array.prototype.slice.call([3,4]) //[3,4]
- call方法是将splice操作的对象指向argument;
- Array.prototype.slice内部实现的逻辑如下
Array.prototype.slice = function(start,end){
var result = new Array();
start = start || 0;
end = end || this.length; // this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键
for(var i = start; i < end; i++)
{
result.push(this[i]);
}
return result;
}
- 由上可知,返回了数组
将函数参数转化为数组的办法
- 如上
- [].slice.call(arguments);
- 根据arguments有length属性,手写for循环,便可转化为数组