zoukankan      html  css  js  c++  java
  • 对象合并

    写组件的时候经常会用到默认设置,而默认设置经常以对象形式传参

    //方法一
    function objMerge(obj1, obj2) {
      //var key;
      for(key in obj2) {
        // 如果target(也就是obj1[key])存在,且是对象的话再去调用deepMerge,
        //否则就是obj1[key]里面没这个对象,需要与obj2[key]合并
        obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ?
        deepMerge(obj1[key], obj2[key]) : obj1[key] = obj2[key];
      }
      return obj1;
    };
     
    //方法二
    function DeepExtend(obj1,obj2){
      if(Object.prototype.toString.call(obj1) === '[object Object]' && Object.prototype.toString.call(obj2) === '[object Object]'){
        for( prop2 in obj2){//obj1无值,都有取obj2
          if(!obj1[prop2]){
            obj1[prop2] =obj2[prop2];
          }else{//递归赋值
            obj1[prop2]=DeepExtend(obj1[prop2],obj2[prop2]);
          }
        }
      }else if(Object.prototype.toString.call(obj1) === '[object Array]' && Object.prototype.toString.call(obj2) === '[object Array]'){
        // 两个都是数组,进行合并
        obj1=obj1.concat(obj2);
      }else{//其他情况,取obj2的值
        obj1 = obj2;
      }
        return obj1;
    };
     
    //方法三
    function extend(des, src, override){
      if(src instanceof Array){
        for(var i = 0, len = src.length; i < len; i++)
          extend(des, src[i], override);
        }
        for( var i in src){
          if(override || !(i in des)){
            des[i] = src[i];
          }
        }
      return des;
    }
  • 相关阅读:
    OCP-1Z0-053-V13.02-638题
    OCP-1Z0-053-200题-60题-637
    OCP-1Z0-053-V13.02-637题
    OCP-1Z0-053-200题-47题-625
    OCP-1Z0-053-V13.02-625题
    OCP-1Z0-053-200题-42题-621
    OCP-1Z0-053-V13.02-621题
    OCP-1Z0-053-200题-41题-620
    OCP-1Z0-053-V13.02-620题
    OCP-1Z0-053-200题-37题-616
  • 原文地址:https://www.cnblogs.com/konghaowei/p/9322651.html
Copyright © 2011-2022 走看看