如何区分深拷贝和浅拷贝:简单来说就是假设B复制了,当修改A时看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。
实现深拷贝的方法:
1.借用JSON对象的parse和stringfy。
2.借用JQ的extend方法。
$.extend([deep],target,object1[,objectN])
deep表示是否是深拷贝,为true为深拷贝,为false则为浅拷贝
target object类型 目标对象,其他对象的成员属性将被附加到该对象上
object1 objectN可选。Object类型第一个及第N个被合并的对象
3.使用Object.create()方法
直接使用var newObj = Object.create(oldObj),可以达到深拷贝的效果。
4.Object.assign()拷贝
当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,此方法在二级属性以后就是浅拷贝。
5.lodash函数库实现深拷贝
lodash.cloneDeep()
网友评论