了解什么是深拷贝和浅拷贝,如何制作深拷贝,在了解深拷贝之前了解堆和堆栈
3358www.Sina.com/存储基本数据类型的值(引用或常量)栈区存储引用数据类型的值
3358www.Sina.com/:地址3358www.Sina.com/:在内存中创建新的复制对象并分配引用
二、序列深拷贝0 .浅拷贝
vararr=[ 1,2,3,4 ] var new arr=arr for (I=0; iarr.length; I ) newarr(I )=arr ) I ) newarr.pop ) ) console.log ) arr; //[ 1,2,3 ]控制台. log (new arr ); //[ 1,2,3 ]1. for循环复制
vararr=[ 1,2,3,4 ] var new arr=[ ] for (I=0; iarr.length; I ) newarr(I )=arr ) I ) newarr.pop ) ) console.log ) arr; //[ 1,2,3,4 ]控制台. log (new arr ); //[ 1,2,3 ]2. slice () ) ) ) ) ) ) ) )。
vararr=[ 1,2,3,4 ] var new arr=arr.slice (0) newArr.pop ) (console.log ) arr ); //[ 1,2,3,4 ]控制台. log (new arr ); //[ 1,2,3 ]3. concat () ) ) ) ) ) ) ) )。
vararr=[ 1,2,3,4 ] var new arr=[ ].concat (arr ) for ) I=0; i arr.length; I ) newarr(I )=arr ) I ) newarr.pop ) ) console.log ) arr; //[ 1,2,3,4 ]控制台. log (new arr ); //[ 1,2,3 ]4. es6的扩展运算符…
vararr=[ 1,2,3,4 ] var new arr=[ . arr ] new arr.pop (控制台. log (arr ); //[ 1,2,3,4 ]控制台. log (new arr ); //[ 1,2,3 ]三、对象深度复制方法1 :使用1:JSON.parse(JSON.Stringify(obj ) );
var obj={ name:'zhangsan ',age :12 } var obj1=JSON.parse (JSON.stringify () obj ); obj1.name='lisi '; 控制台. log (obj 1,obj )方法2 :第三方库lodash中的克隆深度
var _=请求(lo dash ); var obj={ name:'zhangsan ',使用age:18}//clonedeep方法的varobj2=_.clonedeep(obj ); obj2.age=20; 控制台. log (obj; //{ name: 'zhangsan ',age:18}console.log(obj2); //{ name: 'zhangsan ',age: 20 } )四、结语深浅文案是常见的面试问题之一,不难,面试的时候能提高一口,就能证明基础很好,面试官也很基础看看这个,这个是堆区再去~谢谢!