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