zoukankan      html  css  js  c++  java
  • 深拷贝 deepAssign

    实现代码:

    <script type="text/javascript">
    
        Object.deepAssign = function() {
          var args = Array.from(arguments);
          return args.reduce(deepClone,args[0]);
    
          function deepClone(target,obj){
              if(!target) target = Array.isArray(obj)?[]:{};
              if(obj && typeof obj==="object"){
                  for(key in obj){
                      if(obj.hasOwnProperty(key)){
                          //判断ojb子元素是否为对象,如果是,递归复制
                          if(obj[key]&&typeof obj[key] ==="object"){
                              target[key] = deepClone(target[key],obj[key]);
                          }else{
                              //如果不是,简单复制
                              target[key] = obj[key];
                          }
                      }
                  }
              }
              return target;
          }
        }
        // 测验代码
        var obj1 = {a:1, b:2},
            obj2 = {
              a:4,
              rules: {
                code: 'sn0-101',
                text: '芯片'
              }
            },
            obj3 = {
              addrs: {
                bj: '北京',
                sh: '上海'
              }
            };
    
        Object.deepAssign(obj1,obj2,obj3);
        obj1.rules.name = '语言';
    
        console.log(obj1,obj2,obj3);
    </script>

    测验结果:

  • 相关阅读:
    开涛spring3(6.5)
    开涛spring3(6.4)
    开涛spring3(6.3)
    开涛spring3(6.2)
    开涛spring3(6.1)
    开涛spring3(5.4)
    开涛spring3(5.3)
    开涛spring3(5.1&5.2)
    开涛spring3(4.4)
    开涛spring3(4.3)
  • 原文地址:https://www.cnblogs.com/xtreme/p/9927945.html
Copyright © 2011-2022 走看看