AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
[TOC] ### 浅拷贝 浅拷贝操作会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本类型,拷贝的就是基本数据类型的值,如果属性是引用类型,拷贝的就是内存地址。 * 手写 ~~~ function copy(original) { var o = {}; for(var key in original) { o[key] = original[key]; } return o; } ~~~ ### 深拷贝 深拷贝操作会将一个对象从内存中完整拷贝一份出来,从堆内存中开辟一个新的区域放新对象,且修改新对象不会影响原对象。 * 手写 ~~~ function deepCopy(original) { if(typeof original !== 'object') return; var o = {} for(let key in original) { o[key] = typeof original[key] === 'object' ? deepCopy(original[key]) : original[key] } return o; } ~~~ 详情列子:【JavaScript】- 【数组】- 【数组去重】- 【数组的克隆(深拷贝)的方法】 - 赋值与浅拷贝有什么区别? > 1. 把一个对象赋值给另一个新变量时,赋值的是该对象在栈中的地址,两个对象指向的是同一个堆空间。 > 2. 浅拷贝是重新在堆空间中创建一块空间,拷贝后的基本数据类型不相互影响,拷贝后的对象引用类型会相互影响。