码迷,mamicode.com
首页 > Web开发 > 详细

js 对象的浅拷贝和深拷贝

时间:2017-10-18 12:35:39      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:部门   对象   javascrip   gif   浅拷贝   数据   方法   说明   string   

//浅拷贝,拷贝内存块,拷贝部门代码不共存
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);//"这是一个文本"

js 对象的浅拷贝和深拷贝

标签:部门   对象   javascrip   gif   浅拷贝   数据   方法   说明   string   

原文地址:http://www.cnblogs.com/luguiqing/p/7685904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!