1.深拷贝、浅拷贝定义概述
浅拷贝的时候如果目标是基本数据类型,就如同直接赋值那种,会拷贝其本身,如果目标是对象,那么对于浅拷贝而言就只能拷贝其引用,原对象改变,拷贝对象也会随之改变;
但是深拷贝就会拷贝多层,即使是嵌套了对象,也会都拷贝出来。深拷贝在计算机中开辟了一块内存地址用于存放复制的对象,原对象的改变不会对拷贝出的对象产生影响。
2.两者的区别:
深拷贝和浅拷贝最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。
3.实现浅拷贝的方法:
①自定义函数实现(示例拷贝一个对象:函数里定义一个空对象,然后for循环将目标对象中的内容伪数组形式赋给空对象)
②ES6:Object.assign({ },obj) (这是一个对象合并方法)
③ES6:扩展运算—let newObj = {…obj};
④引用lodash.js,使用它的_.clone(value)实现
4.实现深拷贝的方法:
①递归拷贝(代码量大,一般不建议使用)
②JSON方法拷贝:JSON.parse、JSON.stringify(局限性:不能拷贝函数方法)
③Jquery中的extend方法 $.extend(true,[ ]/{ },a);
④引用lodash.js,使用它的_.cloneDeep(value)实现
⑤自定义函数拷贝
深拷贝与浅拷贝详解
本文详细解析了深拷贝与浅拷贝的概念,阐述了两者在处理基本数据类型与对象时的区别,并提供了多种实现拷贝的方法,包括自定义函数、ES6语法、JSON方法及第三方库lodash的使用。
2333

被折叠的 条评论
为什么被折叠?



