深刻理解 引用类型浅拷贝深拷贝
Posted caihua0405
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深刻理解 引用类型浅拷贝深拷贝相关的知识,希望对你有一定的参考价值。
简单粗暴的理解,就是对象都是引用类型 但是有的时候需要完全复制一个新的对象,操作新对象的时候不会改变原对象,这个时候就有了浅拷贝和深拷贝,
浅拷贝,拷贝的只是对象的一级内容,而子集内容还是引用类型,会随着新对象值的改变而改变,
深拷贝,完全拷贝出一个一模一样但是 没有任何关联的对象。
var obj = name:1, age: a:2, b: c:123456 ; var obj2 = copy(obj); function copy(obj) var newobj = ; for(arr in obj) newobj[arr] = obj[arr] return newobj;
这里例子就是 浅拷贝 他的二级 obj2.age.a 还是引用关系 。
function copy(obj) var newobj = ; for(arr in obj) if(typeof obj[arr] === ‘object‘) newobj[arr] = copy(obj[arr]) else newobj[arr] = obj[arr] newobj[arr] = obj[arr] return newobj;
深拷贝 使用递归将所有子集 都打断引用关系
以上是关于深刻理解 引用类型浅拷贝深拷贝的主要内容,如果未能解决你的问题,请参考以下文章