• 快速创建类数组


    创建新对象:
    function createLikeArray(){};
    var obj = new createLikeArray(); //{}

    这时候还只是空对象;如何把对象转换成类数组 ??

    [1, 2, 3, 4] => [0=>1, 1=>2, 2=>3, 3=>4] => {'0' : 1, '1' : 2, '2' : '3', '3' : '4'};

    上面列出了三步骤:

    function createLikeArray( arr ){
        this.addKeys(arr);
    };
    createLikeArray.prototype.addKeys = function( array ){
        var _this = this;
        array.forEach(function(v, i){
               _this[i] = v;
        });
    }

    这样的输出还是Object,不像数组;

    接下来这样呢?

    function createLikeArray( arr ){
        this.addKeys( arr );
    }
    var protos = createLikeArray.prototype = [];
    protos.constructor = createLikeArray;
    protos.addKeys = function( array ){
        var _this = this;
        array.forEach(function(v){
            _this.push(v);
        });
    };

     OK!达到我的要求,数据结构 看着像数组,又有自己的原型、还有数组的属性方法;

    createLikeArray : 构造函数;

    addKeys方法 实际是把数组 变成 Object对象;这是还不像数组;

    再加上原型是一个空数组,又继承了数组的原型所有的方法;这才看起来像数组;

    在后面可以继续给protos 添加属性 和 方法,扩展createLikeArray的原型;

    在研究jQuery源码的时候,看到jQuery的实现方式:

    查找dom,返回的数组形式;再遍历数组 转换为 {0:'',1:'',length:2,...};

    最后在原型上添加 slice、splice方法,看着就是像数组

  • 相关阅读:
    export环境变量 & bash shell使用命令和环境变量
    crontab定时任务
    sh脚本
    Linux的用户及权限相关
    HTTP基础
    群晖Synology
    Cntlm
    oracle存储过程
    ORACLE 增加两列字段
    excel 公式 insert 语句
  • 原文地址:https://www.cnblogs.com/pangzai/p/5553737.html
Copyright © 2020-2023  润新知