zoukankan      html  css  js  c++  java
  • js 对象的浅拷贝和深拷贝

    //浅拷贝,拷贝内存块,拷贝部门代码不共存
    var obj = {
    	a  :  "a",
    	b  :  "b",
    	c  :  {
    		text :  "这是一个文本"
    	}
    }
    
    var copy = obj;
    
    copy.a = "copy";
    console.log(obj.a)// "copy",可以看到这里的浅拷贝,会修改到原先的数据,因为浅拷贝是拷贝同一块内存块
    
    //es6有Object.assign()方法用于深度拷贝,不过只是一级深度拷贝
    var obj = {
    	a  :  "a",
    	b  :  "b",
    	c  :  {
    		text :  "这是一个文本"
    	}
    }
    
    var assigncopy = Object.assign({}, obj);
    assigncopy.a="assigncopy";
    assigncopy.c.text = "assigncopytext";
    console.log(obj.a) // "a"
    console.log(obj.c.text) // "assigncopytext", 说明只是一级深度拷贝而已,用时要小心
    
    //深度拷贝对象,一般都能满足
    var obj = {
    	a  :  "a",
    	b  :  "b",
    	c  :  {
    		text :  "这是一个文本"
    	}
    }
    var stringcopy = JSON.parse(JSON.stringify(obj));
    stringcopy.c.text = "stringcopytext";
    console.log(obj.c.text);//"这是一个文本"
  • 相关阅读:
    ASCII&Base64
    CentOS自动同步时间
    Java的HashMap
    Java线程同步操作
    Nginx基本配置与应用
    vc中调用Com组件的方法详解
    VC++ try catch (转)
    oracle中exp,imp的使用详解
    jdbc oracle 连接字符串
    标准的开源实现
  • 原文地址:https://www.cnblogs.com/luguiqing/p/7685904.html
Copyright © 2011-2022 走看看