Phương thức
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
0 sao chép tất cả các thuộc tính riêng có thể đếm được từ một hoặc nhiều đối tượng nguồn sang đối tượng đích. Nó trả về đối tượng mục tiêu đã sửa đổiThử nó
cú pháp
Object.assign[target, ...sources]
Thông số
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
1Đối tượng đích — cái gì để áp dụng các thuộc tính của nguồn, được trả về sau khi nó được sửa đổi
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
2[Các] đối tượng nguồn — các đối tượng chứa các thuộc tính bạn muốn áp dụng
Giá trị trả về
đối tượng mục tiêu
Sự miêu tả
Các thuộc tính trong đối tượng đích được ghi đè bởi các thuộc tính trong nguồn nếu chúng có cùng khóa. Các thuộc tính của nguồn sau ghi đè lên các thuộc tính trước đó
Phương thức
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
0 chỉ sao chép các thuộc tính có thể đếm được và thuộc tính riêng từ đối tượng nguồn sang đối tượng đích. Nó sử dụng const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
4 trên nguồn và const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
5 trên đích, vì vậy nó sẽ gọi getters và setters. Do đó, nó gán thuộc tính, so với sao chép hoặc xác định thuộc tính mới. Điều này có thể làm cho nó không phù hợp để hợp nhất các thuộc tính mới thành một nguyên mẫu nếu các nguồn hợp nhất chứa gettersĐể sao chép các định nghĩa thuộc tính [bao gồm cả số lượng của chúng] vào các nguyên mẫu, hãy sử dụng
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
6 và const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
7 thay thếCả hai thuộc tính
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
8 và const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
9 đều được sao chépTrong trường hợp có lỗi, ví dụ: nếu một thuộc tính không thể ghi, thì một
Object.assign[target, ...sources]
10 sẽ xuất hiện và đối tượng const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
1 sẽ bị thay đổi nếu bất kỳ thuộc tính nào được thêm vào trước khi xuất hiện lỗiGhi chú.
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
0 không ném vào nguồn Object.assign[target, ...sources]
13 hoặc Object.assign[target, ...sources]
14ví dụ
Nhân bản một đối tượng
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
Cảnh báo về Deep Clone
Để sao chép sâu, chúng ta cần sử dụng các lựa chọn thay thế, vì
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
0 bản sao các giá trị thuộc tínhNếu giá trị nguồn là tham chiếu đến một đối tượng, nó chỉ sao chép giá trị tham chiếu
Object.assign[target, ...sources]
1Hợp nhất các đối tượng
Object.assign[target, ...sources]
9Hợp nhất các đối tượng có cùng thuộc tính
const obj = { a: 1 };
const copy = Object.assign[{}, obj];
console.log[copy]; // { a: 1 }
0Các thuộc tính được ghi đè bởi các đối tượng khác có cùng thuộc tính sau theo thứ tự tham số