通过slice与call方法实现真伪数组切换

最近在研究JQuery代码,发现JQuery实现真伪数组的代码十分巧妙;

伪数组转为真数组的实现代码比较简单,如下:

    let obj={};
    let arr=[1,2,3,4,4,5];
    //通过[].push找到数组中push方法
    //通过apply修改this的指向
    //将arr的值赋给该对象
    //将真数组转化为伪数组
    [].push.apply(obj,arr);
    console.log(obj);

初,那么来到真数组转为伪数组,起初以为真数组转化为伪数组,只需要在apply参数中,调换真伪数组参数的位置就可以了。

但是后来发现在IE8中,是不支持通过[].push.apply(arr,obj)这种方法的。

虽然说IE8比较菜,但是还是得兼容,怎么办?

就想到了通过数组中的slice方法来进行操作,slice方法,注意其有两个参数,第一个是起始位置,第二个是末尾位置,分割时候是不包括末尾位置的;如果我们不传参,会返回一个新的数组;

这不就对了吗?我需要的就是返回一个新的数组!

    let arr1=[1,2,333,44];
    [].slice.apply(arr1);
    console.log(arr1);
    console.log(typeof arr1);//object

猜你喜欢

转载自blog.csdn.net/m0_38005587/article/details/81386958