//浅拷贝,拷贝内存块,拷贝部门代码不共存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 对象的浅拷贝和深拷贝
原文地址:http://www.cnblogs.com/luguiqing/p/7685904.html