Array.prototype.slice.call(arguments) 一般用于将参数arguments强制转化为数组。数组
slice()方法可从已有的数组中返回选定的元素。因此这句代码能够等价为[].slice.call(arguments);slice()为Array原型上的一个方法,调用者沿着原型链向上寻找。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; }
而call是为了改变调用者的内部this指向,用法:this
call(this,arg1,arg2);