您的位置:首页 > Web前端 > JavaScript

javascript:Array.slice.call 到Array.prototype.slice.call

2015-12-01 23:39 639 查看
举个从对象到数组的例子:

var obj={};
obj[1]=1;
obj[2]=2;
obj.length=2;
var arr =Array.prototype.slice.call(obj);
///arr=[1,2]


通过Array.prototype.slice.call生成了一个新的数组,这里能不能通过Array.slice.call(obj)得到相同的结果呢?

通过编译可以知道 Array.slice =slice() Array.prototype.slice =slice()

而call函数只是一个改变对象上下文的方式,换句话说,只要obj里面有length,就可以完成从对象到新数组的过程

但是结果是不行的

Array.slice==Array.prototype.slice >> false

但是上面并不能说明问题,猜测是Array.slice里面并没有算法,而是通过引用的方式,比如retrun this.prototype.slice()

这样的话,当我们调用Array.slice.call(obj)时,由于this已经变成了obj对象,要调用obj.prototype.slice()就无法得到返回结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: