最近發現的乙個bug讓我從react框架角度重新複習了一遍淺拷貝與深拷貝。
淺拷貝,就是兩個變數都是指向乙個位址,改變了乙個變數,那另乙個變數也隨之改變。這就是淺拷貝帶來的***,兩個變數會相互影響到,因為它們指向同乙個位址。
深拷貝,就是互相獨立,指向的是不同的位址,乙個變數改變了,另乙個變數不會被影響到。
react角度:
父元件傳給子元件的attr,在子元件通過props.attr直接複製給childattr,這就是淺拷貝,父元件的attr與子元件的childattr指向同乙個位址,在子元件中改變childattr,那麼父元件中的attr也會隨之改變。這時再將attr傳入這個子元件,attr的值就是被改變之後的值。所以要想資料源頭attr不會被改變,這時就需要在父元件中深拷貝attr,然後再一一傳入子元件;或者在子元件中將props.attr深拷貝給childattr。
對於陣列的淺拷貝與深拷貝的資料格式:
淺拷貝: newarray = array
深拷貝: newarray = _.map(array, (a) => )
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...
淺拷貝與深拷貝
淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...