JS篇-Array.prototype.slice.call()详解

本文详细解析了JavaScript中的Array.prototype.slice.call()方法,揭示其将具有length属性的对象转换为数组的原理。通过call方法,使得Array.prototype.slice能作用于非Array对象如arguments,从而实现类似arguments.toArray().slice()的效果。文中还探讨了slice方法的内部实现,并指出使用此方法的关键在于对象必须有length属性。最后,通过计算多个数值总和的例子,展示了slice.call()在实际场景中的应用价值。
摘要由CSDN通过智能技术生成

slice.call()这个方法第一次接触的时候很容易迷惑,它使arguments转换为array;更具体的理解是:

==》是能够将具有length属性的arguments转换为数组, 可以理解为 arguments.toArray().slice());

==>所以,这个过程我们是不是可以理解为 Array.prototype.slice.call(arguments)的实现过程就是把传入进来的具有length属性的第一个参数arguments转换为数组,再调用它的slice(截取)方法;

本人也看了不少教程和文章,下面分享下感觉比较理解的原理解释:

1. 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++)
    <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值