Array.prototype.slice.call()

155 阅读1分钟

Array.prototype.splice.call(arguments)方法是将arguments转化为数组,此方法可以将带有length属性的对象转化为数组

解析

  1. 首先普通数组的调用方式为:Array.prototype.slice.call([3,4]) //[3,4]
  2. call方法是将splice操作的对象指向argument;
  3. 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;
    }
  1. 由上可知,返回了数组

将函数参数转化为数组的办法

  1. 如上
  2. [].slice.call(arguments);
  3. 根据arguments有length属性,手写for循环,便可转化为数组