zoukankan      html  css  js  c++  java
  • 工具库汇总

    利用  defineProperty 与 getOwnPropertyDescriptor 完成对属性的深度复制

    Object.defineProperty(Object.prototype,
        "extend",{
            writable:true,
            enumerable:false,
            configurable:true,
            value:function(o){
                //获取自有属性 和 可枚举属性
                var names = Object.getOwnPropertyNames(o),len;
                for(var i = 0;len = names.length,i<len;i++){
                    //属性存在则跳过
                    if(names[i] in  this) continue;
                    //获取其属性对应的描述对象
                    var oDesc = Object.getOwnPropertyDescriptor(o,names[i]);
                    Object.defineProperty(this,names[i],oDesc);
                }
            }
        });

     实例:

    var now = Object.defineProperties({},{
        "custom":{
            writable:false,
            configurable:false,  
            enumerable:true,
            value:"被修改了 这么神奇"
        },
        "custom2":{
           writable:false,
           configurable:false,  
           enumerable:true,
           value:"被修改了 这么神奇"
        }
    });
    
    console.log(now); //{ custom: '被修改了 这么神奇', custom2: '被修改了 这么神奇' }
    
    
    
    // extend 继承
    
    Object.defineProperty(Object.prototype,
        "extend",{
            writable:true,
            enumerable:false,
            configurable:true,
            value:function(o){
                //获取自有属性 和 可枚举属性
                var names = Object.getOwnPropertyNames(o),len;
                for(var i = 0;len = names.length,i<len;i++){
                    //属性存在则跳过
                    if(names[i] in  this) continue;
                    //获取其属性对应的描述对象
                    var oDesc = Object.getOwnPropertyDescriptor(o,names[i]);
                    Object.defineProperty(this,names[i],oDesc);
                }
            }
        });
    
    
    var a = {};
    a.extend(now);
    console.log(a);
    // { custom: '被修改了 这么神奇', custom2: '被修改了 这么神奇' }
  • 相关阅读:
    大数据(7)
    大数据(6)
    大数据(5)
    大数据(4)
    头发护理 -- 生发养发
    Sublime 中 SFTP插件的使用
    大数据(3)
    Apache Spark源码走读之5 -- DStream处理的容错性分析
    Apache Spark源码走读之4 -- DStream实时流数据处理
    Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
  • 原文地址:https://www.cnblogs.com/czhyuwj/p/5888993.html
Copyright © 2011-2022 走看看