Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Object.assign() trong JavaScript

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