[].slice.call(arguments)原理解析

slice将 arguments 转化为数组的原理
更新于: 2021-12-19 12:57:28

基本原理

其基本原理就类似我们上面开头写的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
  }
};

 分析

  1. target 有类似于 this 的东西
  2. 所以,call(arguemnts) 就把这个 arrayLike 当成数组来处理了