Object.assign() copy tất cả **own enumerable properties** từ 1+ source object vào target object. Trả về target object.
Ví dụ
const targetObj = { a: 1, b: 2 };
const sourceObj = { b: 4, c: 5 };
const returnedTarget = Object.assign(targetObj, sourceObj);
console.log(targetObj); // { a: 1, b: 4, c: 5 }
console.log(returnedTarget); // { a: 1, b: 4, c: 5 }
console.log(returnedTarget === targetObj); // true
console.log(sourceObj); // { b: 4, c: 5 } (không đổi)
Lưu ý quan trọng
- Chỉ copy **own enumerable properties** (không prototype, không non-enumerable).
- Dùng
[[Get]]trên source,[[Set]]trên target → **kích hoạt getter/setter**. - **Shallow copy**: object lồng nhau vẫn chung reference.
- Source object **không bị thay đổi**.
ES2018: Spread syntax {...target, ...source} cũng làm tương tự (nhưng không invoke setter).