[].slice.call(arguments)原理解析
slice将 arguments 转化为数组的原理
基本原理
其基本原理就类似我们上面开头写的for循环遍历原数组
根据start和end的值再复制一份到新数组并返回。
所以当我们使用[].slice.call(arguments),slice方法内部的this就会被替换成arguments,并循环遍历arguments,复制到新数组返回
这样就得到了一个复制arguments类数组的数组对象。
slice等数组方法的伪代码实现为:
Array.prototype.slice = function (n1, n2) {
var target = this;
for (var i = 0; i < target.length; i++) {
// balabala
}
};
分析
target
有类似于this
的东西- 所以,
call(arguemnts)
就把这个arrayLike
当成数组来处理了