首页 > 其他 > 详细

Array.prototype.slice.call(arguments)

时间:2019-10-23 15:52:28      阅读:87      评论:0      收藏:0      [点我收藏+]

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);

Array.prototype.slice.call(arguments)

原文:https://www.cnblogs.com/c-x-a/p/11726120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!