美文网首页
深层克隆和浅层克隆

深层克隆和浅层克隆

作者: 浮巷旧人 | 来源:发表于2018-08-01 21:55 被阅读0次

浅层克隆

var  obj  ={
      name  :'abc',
      age  :  123, 
      sex  :  'female',
      card  :  ['visa',  'unionpay']
}
var  obj1  =  {}
function  clone(origin,  target){
      var  target  =  target  ||  {};
      for(var  prop  in  origin)  {
            target[prop]  =  origin[prop];
      }
      return  target;
}
clone(obj,  obj1);

深层克隆

//遍历对象 for(var prop in obj)
//1.判断是不是原始值 typeof() object
//2.判断是数组还是对象 instanceof / toString/consutrutor
//3.建立相应的数组或对象
//递归

function deepClone(origin,  target){
    var target  =  target  || {},
         toStr  =  Object.prototype.toString,
         arrStr  =  "[object  Array]";
    for(var  prop  in  origin)  {
      if(origin.hasOwnProperty(prop)){
           if(origin[prop]  !==  "null"  &&      
              typeof(origin[prop]) ==  'object'){  
           / if(toStr.call(origin[prop])  ==  arrStr ){
          /         target[prop]  =  [];
           / }else {
           /        target[prop]  =  {};
           / }
        target[prop]  =  toStr.call(origin[prop])  ==
           arrStr  ?  []  :  {};
            deepClone(origin[prop],  target[prop]);
       }else{
              target[prop]  =  origin[prop];
           }  
      }
    }
条件判断? 是:否 并且会返回值
var    num  =  1>0?  2+2  :  1+1;    return  4

深浅层克隆区别:浅层克隆只是把引用值得地址复制过来了,两者指向同一房间,如果obj引用值改变,则obj1也改变。而深层克隆是两者各指向两个房间,改变引用值互不影响。

相关文章

  • 深层克隆和浅层克隆

    浅层克隆 深层克隆 //遍历对象 for(var prop in obj)//1.判断是不是原始值 type...

  • js浅度克隆 与 深度克隆

    浅层克隆:当克隆引用值时,两个对象会共用一个引用地址,造成相互的干扰,即我改,它也改。 深层克隆深层克隆:克隆出来...

  • 对象的浅层克隆和深层克隆

    浅层克隆:将a对象里的所有属性赋给一个b的空对象,若a对象中存在引用值,则克隆后修改b中的引用值,a也会跟着修改,...

  • JS 深度克隆

    想要克隆一个对象或数组,如果只是普通的赋值,那么只是复制了浅层,深层的引用值其实指向的是同一块内存。 JSON克隆...

  • 每日一条JS精华片段:deepClone

    创建对象的深层克隆。克隆基本值,数组和对象 Javascript方法 示例 执行结果 请关注我,每天获得一条精华小片段!

  • JS的浅克隆和深克隆

    一说到深层克隆,大家多会跃跃欲试的表明,大家都会,但是大家知道真 正的深层克隆是什么样子的么,本篇文章将会告诉你。...

  • java克隆

    java克隆 java克隆分为浅克隆和深克隆,概念如下: 浅拷贝(浅克隆)克隆出来的对象的所有变量都含有与原来的对...

  • 使用对象序列化和反序列化实现深度克隆

    java对象进行克隆,分为浅克隆和深克隆 浅克隆需要实现java.lang.Cloneable接口,并重写java...

  • Java-原型模式

    模式定义: 使用场景: 以克隆层次来区分,可有深克隆和浅克隆两种。 浅克隆实现如下: 运行结果: 浅克隆就是拷贝一...

  • Java深复制浅复制解析.md

    Java 克隆概念 Java克隆分为深克隆和浅克隆两种类型。 浅复制(浅克隆)被复制对象的所有变量都含有与原来的对...

网友评论

      本文标题:深层克隆和浅层克隆

      本文链接:https://www.haomeiwen.com/subject/alldvftx.html