对于拓展运算符是深拷贝还是浅拷贝网上怎么说的都有,我就说一下我的理解。
什么是深拷贝?什么是浅拷贝?
假如B复制了A,修改A的时候,看B是否发生变化:
如果B也跟着变了,说明是浅拷贝,拿别人手段!
如果B没有改变,说明是深拷贝,自食其力!
怎么判断拓展运算符是什么拷贝呢?
看一下下面的例子:
let a = [1,2,3]; let b = [...a]; console.log(b);//[1,2,3] a[1] = 4; console.log(a);//[1,4,3] console.log(b);//[1,2,3]
结合浅拷贝和深拷贝的概念,那拓展运算符是不是深拷贝?别急看下面的例子:
let peoples = [{name:'zs',age:18,sex:"男"},{name:'ls',age:16,sex:"女"}]; let peoplesTwo = [...peoples]; peoples[0].age = 22; console.log(peoples);//[{name:'zs',age:22,sex:"男"},{name:'ls',age:16,sex:"女"}] console.log(peoplesTwo);//[{name:'zs',age:22,sex:"男"},{name:'ls',age:16,sex:"女"}]
结合浅拷贝和深拷贝的概念,那拓展运算符是不是浅拷贝?
所以结合上面两个例子得出一个结论,拓展运算符是深拷贝还是浅拷贝是看具体拷贝内容的,当拷贝的内容只有一层时是深拷贝,层数很多时时浅拷贝,如果还是不太理解可以先看深拷贝和浅拷贝的定义然后自己手敲一下代码,会有所帮助,谢谢。
声明:本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。