1、浅拷贝 :只复制指向某个对象的指针,而不复制这个对象本身,新旧对象共享一块内存。
2、深拷贝 :复制并创建一个一模一样的对象,不共享内存,修改新对象旧对象不会变。
深拷贝方式:
1、递归(对可遍历的属性进行递归)
// 一般来说,在js中我们用JSON.parse(JSON.stringify(obj))来完成深拷贝,但是该方法不能解决属性为函数,undefined,循环引用的的情况,因此我们有时需要自己实现一个深拷贝。
function clone(o) {
var temp = {}
for (var key in o) {
if (typeof o[key] === 'object' && o[key] !== null) {
temp[key] = clone(o[key])
} else {
temp[key] = o[key]
}
}
return temp
}
2、使用JSON对象的parse和stringify
浅拷贝方式:
1、Object.assign
2、(...) 扩展运算符
原文出处:http://www.dongblog.com/notes/55.html
来源:博客网 转载请注明出处!