Object.assign()
Copy một hoặc nhiều source object vào target object. Gọi getter trên source, setter trên target. Trả về target object đã merge. Không throw error với source null/undefined.
Cú pháp
Object.assign(target, ...sourceObjects);
Ví dụ 1: Merge nhiều object
<html> <body> <script> var obj1 = { a: 10, b:20 }; var obj2 = { c: 30, d:40 }; var obj3 = { e: 50 }; var obj = Object.assign({}, obj1, obj2, obj3); document.write(JSON.stringify(obj)); </script> </body> </html>
Kết quả
{"a":10,"b":20,"c":30,"d":40,"e":50}
Ví dụ 2: Xử lý trùng property
Property trùng lấy giá trị source sau cùng (obj3 ghi đè obj2, obj1).
<html> <body> <script> var obj1 = { a: 10, b:20, c:1 }; var obj2 = { b: 30, d:10, c:3 }; var obj3 = { e: 60, d:70, c:0 }; var obj = Object.assign({}, obj1, obj2, obj3); document.write(JSON.stringify(obj)); </script> </body> </html>
Kết quả
{"a":10,"b":30,"c":0,"d":70,"e":60}
Lưu ý:
- Shallow copy (chỉ 1 cấp), nested object vẫn share reference
- Target object đầu tiên bị mutate (nên dùng
{}làm target) - ES9:
{...obj1, ...obj2, ...obj3}(spread syntax) ngắn gọn hơn - Không copy prototype, chỉ own enumerable properties