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: '被修改了 这么神奇' }
  • 相关阅读:
    配置log4j不同方法打印到不同的日志中
    Logging日志信息(转)
    Mybatis 动态sql
    mysql字段截取(转)
    tomcat多个端口配置
    Map,list,set,集合转化
    简单测试java
    java中有关自增的问题
    DMA复习
    笔试题
  • 原文地址:https://www.cnblogs.com/czhyuwj/p/5888993.html
Copyright © 2011-2022 走看看