ES6 物件解構賦值(淺拷貝 VS 深拷貝)

2022-07-06 18:36:06 字數 1165 閱讀 2422

物件的擴充套件運算子(...)用於取出引數物件的所有可遍歷屬性,拷貝到當前物件之中。

let aa = 

let bb = ;

console.log(bb); //

擴充套件運算子(...)可以用於合併兩個物件

let aa =  

let bb =

let cc = ;

// 等同於:

// let cc = object.assign({}, aa, bb);

console.log(cc); //

在擴充套件運算子後面,加上自定義的屬性,則擴充套件運算子內部的同名屬性會被覆蓋掉。

let aa = 

let dd = ;

// 等同於:

// let dd = };

// let dd = object.assign({}, aa, );

console.log(dd); //

一般,在 redux 中修改 state 時,會用解構賦值的方法。

例如,下面肯定是引用賦值:

let aa = 

let bb = aa;

bb.age = 22;

console.log(aa.age); // 22

上面, 物件 bb 是 aa 的乙個引用賦值。那麼,如果使用解構賦值得到 bb 呢:

let aa = 

let bb = ;

bb.age = 22;

console.log(aa.age); // 18

let aa = 

}let bb = ;

bb.address.city = 'shenzhen';

console.log(aa.address.city); // shenzhen

如果像拷貝 aa 中的 city 屬性,可以像下面處理:

let aa = 

}let bb =

};bb.address.city = 'shenzhen';

console.log(aa.address.city); // shanghai

es6 物件深拷貝和淺拷貝

簡介 在專案中,為了不影響原有資料,在運算元據時,經常需要深拷貝乙個物件,在開發過程中,實踐得出。const object1 const object2 object.assign object1 console.log object2 object 這是淺拷貝,返回的不是乙個新物件,而是把乙個或多...

ES6 物件的解構賦值

es6的解構賦值,在我看來是提供了乙個整體賦值的方案。包括陣列和物件的整體賦值。基本原則如下 let x,y 1,2 x 1 y 2 let foo aaa bar bbb 但是物件的解構賦值,允許給賦值的變數重新命名。物件的重新命名解構 我自己去的名字,便於理解 其實在給物件進行解構賦值的時候,有...

ES6 物件的解構賦值

物件的解構賦值 解構不僅可以用於陣列,還可以用於物件。let console.log foo aaa console.log bar bbb這裡的foo,bar一定要對應。物件的解構與陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值由它的位置決定 而物件的屬性沒有次序,變數必須與屬性同名,...