對於拓展運算符是深拷貝還是淺拷貝網上怎麼說的都有,我就說一下我的理解。 什麼是深拷貝?什麼是淺拷貝? 假如B複製了A,修改A的時候,看B是否發生變化: 如果B也跟著變了,說明是淺拷貝,拿別人手段! 如果B沒有改變,說明是深拷貝,自食其力! 怎麼判斷拓展運算符是什麼拷貝呢? 看一下下麵的例子: let ...
對於拓展運算符是深拷貝還是淺拷貝網上怎麼說的都有,我就說一下我的理解。
什麼是深拷貝?什麼是淺拷貝?
假如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:"女"}]
結合淺拷貝和深拷貝的概念,那拓展運算符是不是淺拷貝?
所以結合上面兩個例子得出一個結論,拓展運算符是深拷貝還是淺拷貝是看具體拷貝內容的,當拷貝的內容只有一層時是深拷貝,層數很多時時淺拷貝,如果還是不太理解可以先看深拷貝和淺拷貝的定義然後自己手敲一下代碼,會有所幫助,謝謝。