深刻理解 引用类型、浅拷贝、深拷贝
简单粗暴的理解,就是对象都是引用类型 但是有的时候需要完全复制一个新的对象,操作新对象的时候不会改变原对象,这个时候就有了浅拷贝和深拷贝,
浅拷贝,拷贝的只是对象的一级内容,而子集内容还是引用类型,会随着新对象值的改变而改变,
深拷贝,完全拷贝出一个一模一样但是 没有任何关联的对象。
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; }
深拷贝 使用递归将所有子集 都打断引用关系
981900309@qq.com