javascript 浅拷贝

编程入门 行业动态 更新时间:2024-10-21 13:22:59

<a href=https://www.elefans.com/category/jswz/34/1771426.html style=javascript 浅拷贝"/>

javascript 浅拷贝

1、js基本数据类型:Number、Boolean、String、null、undefine、Symbol(ES6新增);基本数据类型存放在栈中,它们之间的拷贝均为深拷贝,即两者再无任何关联,如下:


2、js引用数据类型:Object(Array,Date,RegExp,Function);引用数据类型存放在堆中,并在栈中存放一个地址,用于访问堆中的内容。
引用数据类型之间的拷贝要根据拷贝后,两者中其中一者的变化是否会引起另一者的变化来判断,若是两者中其中一方的改变会影响另一方则为浅拷贝,反之为深拷贝。
3、举例浅拷贝

上面的函数中,使用for…in 对数组/对象进行遍历并赋值,此种方法仅能实现浅拷贝。结果如下:

注意:使用for…in赋值后,a中的基本数据类型1,2,3均被拷贝到a_copy中有自己独立的内存,所以a_copy中基本数据类型的变化就不会引起a中的变化,但是引用数据类型的变化会改变a,因为两者都指向一个堆,复制的仅仅是地址。
4、浅拷贝的方法有哪些?
1)for…in,上面例子中已有介绍,这里不再赘述;
2)Object.assign,是ES6的新增方法,可以实现对象之间的合并,第一个参数为目标对象,不同对象直接出现属性名相同时,后面对象的值可以覆盖前面。举例如下;


当参数只有1个时,Object.assign()可以实现对象的浅拷贝,且使用Object.assign()拷贝的对象无论是对于基本数据类型或者引用数据类型,两者任何一方的变化都会引起另一方的变化。如下:


3)直接赋值,举例如下

更多推荐

javascript 浅拷贝

本文发布于:2023-07-28 17:00:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1256765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:javascript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!