zoukankan      html  css  js  c++  java
  • 对象的深复制、对象的合并总结

    一,对象的复制分为深复制和浅复制,浅复制就是当一个属性发生了改变,那么另一个对象里面的元素也发生了改变

     var obj={

    a:1,

    b:2 

    };

    b=obj;

    二、对象的合并

    1,$.extend({},obj1,obj2);深复制

    2,  Object.assign(obj1,obj2)

     3, extend=function(o,n){

     for(item of n){

     if(n.haspropety(item)&&!n.haspropety(item)){

    o[n]=p[n]; 

      }

      }}

    二、 对象的深复制

    1、

    var obj={

     'a':1

    b=JSON.parse(json.stringfy(obj));

    3.1.存在的问题

     1, 不能进行深层次的引用

     2, 会忽略掉symbol

     3,   会忽略掉undefind

     4, 不能序列化函数

    var obj={

     age:undefind,

     name:Symbol('mail'); 

     fn:function(){},

     k:'ooo', 

     注释:为了解决以上的问题,可以使用lodash

      使用:

    var objects = [{ 'a': 1 }, { 'b': 2 }];
     var deep = _.cloneDeep(objects);
    console.log(deep[0] === objects[0]);

        

    2 使用jquery

    var  ex=$.extend(true,obj2,obj1) 

    3.递归的方式


    function deep(p, c) {
    for (var item in p) {
    if (p.hasOwnProperty(item)) {
    if (typeof p[item] === 'object') {
    c[item] = Object.prototype.toString.call(p[item]) === '[object Array]' ? []; { }
    deep(p[item],c[item])
    } else {
    c[item] = p[item];
    }
    }
    }

    }


  • 相关阅读:
    JS 跨域问题。。
    LInq 中使用正则表达试
    CreateXMl
    DeleteXMl
    SameNameFile 比较两个文件夹是否同名
    UpdateXML
    AddXML
    AsDataView Dataview ,DataTable 跟linq的相互转化
    AttributeToElement
    WoreTime 计算单词出现的次数
  • 原文地址:https://www.cnblogs.com/yayaxuping/p/9588513.html
Copyright © 2011-2022 走看看