类数组及其与call的使用(个人学习笔记)

2018-10-05  本文已影响0人  大哈QAQ

类数组定义:

            拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解);不具有数组所具有的方法,即不可以直接使用数组的方法。

常见的类数组:

            arguments、元素集合、节点集合.....

类数组转换为数组:

            Array.prototype.slice.call(arguments)     //得到一个值为arguments 的真正的数组

            通过上面语句可以将类数组转换为数组,但为什么会这样呢?我们先探讨slice的实现吧:

            Array.prototype.slice = function () {

                    var    arr = [ ];

                    for (var i = 0;i<this.length;i++) {

                            arr[arr.length] = this[ i ];

                    }

                    return    arr;

            }

            //上面就是slice的底层,同时我们知道call方法可以改变this指向,所以 通过call将slice方法中的this改为arguments就可以将arguments的值拷贝一份,从而得到一组值与arguments值一样的数组                                     

上一篇 下一篇

猜你喜欢

热点阅读