map函数本身并不执行深拷贝,而是执行浅拷贝。对于基本数据类型(如数字、字符串、布尔值等),map会复制其值;但对于引用类型,map只会复制其引用,而不是对象的深层次内容。 示例展示map函数的拷贝行为: javascript // 示例对象 const obj = { a: 1, b: 2 }; // 原数组 const arr = [obj, obj]; // ...
浅拷贝就是只拷贝基础数据类型的数据,并且数据只有单一的一层,而深拷贝用于拷贝具有复杂的数据类型的数据 应用场景: 浅拷贝主要用于你需要拷贝的对象的数据结构只有基础数据类型。 深拷贝主要用于你想操作该数据,但是又不想影响到原数据的时候,就可以进行深拷贝。
console.log(arr2); //[1, 2, 3, 4] 简单来说,深拷贝主要是将另一个对象的属性值拷贝过来之后,另一个对象的属性值并不受到影响,因为此时它自己在堆中开辟了自己的内存区域,不受外界干扰。 浅拷贝主要拷贝的是对象的引用值,当改变对象的值,另一个对象的值也会发生变化。 那具体使用情况该使用浅拷贝还是...
设想一下,如果我们要拷贝的对象非常庞大时,使用Map会对内存造成非常大的额外消耗,而且我们需要手动清除Map的属性才能释放这块内存,而WeakMap会帮我们巧妙化解这个问题。 其他数据类型 在上面的代码中,我们其实只考虑了普通的object和array两种数据类型,实际上所有的引用类型远远不止这两个,还有很多,下面我们先尝试获取对...
浅拷贝 先拷贝,只是简单的对象引用,并没有真正的从内存中开辟一块空间。 深拷贝 将一个对象从内存中完整的拷贝一份出来,开辟一个新的区域空间来存放对象。 js中的浅拷贝 基本数据类型:名字和值都存在栈内存中 引用数据类型,名字存在栈内存中,值存在堆内存中。 实现的几种方式 Object.assign() rest运算符 数组...
浅拷贝:浅拷贝的拷贝的是原对象的引用,这就意味着如果原对象的该属性值改变了,那么新的拷贝对象的属性值也会发生改变。 constobj={foo:{bar:{name:"name1"}}}// 浅拷贝constshallowObj=shallowClone(obj);console.log(obj.foo===shallowObj.foo);// true// 深拷贝constdeepObj=deepClone(obj);console.lo...
浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存; 深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变; 我们都知道,JavaScript有六种基本的数据类型。 五种基本的数据类型:string,number,undefined,boolean,null ...
深拷贝 1、Object.assign() 当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。 let foo = { a: 1, b: 2, c: { d: 1, } } let bar = {}; Object.assign(bar, foo); ...