(地址引用):将对象的属性依次复制,只复制一层属性,不会递归复制
+ 不开辟新栈,直接传值和传址
+ 两个对象指向同一个地址,修改同步
(值引用):递归的拷贝对象的所有属性。
+ 开辟新栈,对象对应不同地址,修改互不影响
+ Array.concat()
+ Object.assign()
+ JSON.parse()+JSON.stringify():用例:`const obj2 = JSON.parse(JSON.stringify(obj1));`
+ ~缺点:
+ undefined、任意的函数、正则表达式类型以及 symbol 值,在序列化过程中会被忽略或者被转换成 null(数组对象)
+ 抛弃constructor
+ 存在循环引用
+ 自己写递归函数(轮子)
+ 第三方库:jq 的extend(true, result, src1, src2[ ,src3])、lodash 的cloneDeep(src)
概念:对象A中包含指向对象B的指针,对象B中包含指向对象A的指针,会引发内存泄漏现象
未完。
原文:https://www.cnblogs.com/qiuqiubai/p/12539530.html