slice.call()这个方法第一次接触的时候很容易迷惑,它使arguments转换为array;更具体的理解是:
==》是能够将具有length属性的arguments转换为数组, 可以理解为 arguments.toArray().slice());
==>所以,这个过程我们是不是可以理解为 Array.prototype.slice.call(arguments)的实现过程就是把传入进来的具有length属性的第一个参数arguments转换为数组,再调用它的slice(截取)方法;
本人也看了不少教程和文章,下面分享下感觉比较理解的原理解释:
1. 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++)
<