JS浅拷贝与深拷贝只针对的是数组(Array)和对象(Object)两种引用数据类型。引用类型的数据在内存中分两部分存储,分别是存储在栈中的引用地址和存储在堆中的数据。
浅拷贝其实拷贝的是引用类型数据的地址,两个对象共享堆中的数据,一个对象改变了某个属性值,另一个对象的属性值也会跟着改变。而深拷贝则会同时拷贝引用地址和数据,之后两个对象之间是完全独立的,互不影响。
浅拷贝实现方式
深拷贝实现方式
1、var newObj = JSON.parse(JSON.stringify(obj));该方式实现简单,但是不能拷贝函数。
2、递归函数
注:因为JS并没有对hasOwnProperty属性名进行保护,在obj对象上可能存在同名的属性方法,如下:
obj.hasOwnProperty(i)条件语句将始终返回false,这显然不是我们期望的,所以可以使用原型上的hasOwnProperty方法,Object.prototype.hasOwnProperty.call(obj, i);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/208030.html