深浅拷贝
数据类型
- 基本类型 栈内存
- 引用类型 堆内存 变量 指向实际堆内存中实际对象的引用
浅拷贝
- 只拷贝一层
- 引用类型只拷贝内存地址
- 修改一个对象属性,另外一个对象属性会发生改变
实现方式
Object.asign()
Array.prototype.slice()
Array.prototype.concat()
- 扩展运算符
深拷贝
开辟新的栈,两个对象属性完全相同,对应两个不同地址。修改一个对象属性,另外一个对象属性不会发生改变
实现方式
_.cloneDeep()
lodash 深拷贝jQuery.extend()
JSON.stringify()
会忽略 undefined symbol 函数- 手写循环递归
区别
- 浅拷贝 只复制属性指向某个对象的指针,不复制对象本身,新旧对象共享同一块内存 修改对象属性会改变原对象
- 深拷贝 创造一个一模一样的对象,新旧对象不共享内存,修改对象属性不会改变原对象
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 易函123!
评论