Array.prototype.slice.call(arguments)

Array.prototype.slice.call(arguments)能将具有length属性的对象(key值为数字)转成数组。但有一个例外,IE下的节点集合它不能转换(因为IE下的dom对象是以com对象的形式实现,js对象和com对象不能进行转换)
slice中文名是截取,在go语言中我们称之为切片, 我们可以理解为Array.prototype.slice.call(arguments)就是 arguments.toArray().slice().
其内部实现

Array.prototype.slice = function(start,end){
    var result = new Array();
    start = start || 0;
    end = end || this.length; 
  
    for(var i = start; i < end; i++)
    {
         result.push(this[i]);
    }

    return result;
}

上面 this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键。

其中下面两个方法是等价的:

 var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);
posted @ 2019-10-23 14:32  公众号python学习开发  阅读(160)  评论(0编辑  收藏  举报