JavaScript Object.assign ()

Phương thức JavaScript Object.assign () sao chép tất cả các thuộc tính có thể liệt kê của các đối tượng đã cho vào một đối tượng duy nhất và trả về nó.

Cú pháp của assign()phương thức là:

 Object.assign(target,… sources)

Các assign()phương pháp, là một phương pháp tĩnh, được gọi bằng cách sử dụng Objecttên lớp.

Giao () Tham số

Các assign()phương pháp có trong:

  • target - Đối tượng đích - áp dụng các thuộc tính của nguồn vào cái gì, được trả về sau khi nó được sửa đổi.
  • source - (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.

Trả về giá trị từ gán ()

  • Trả về đối tượng đích.

Lưu ý: Các thuộc tính trong đối tượng đích bị ghi đè bởi các thuộc tính trong nguồn nếu chúng có cùng một khóa.

Ví dụ 1: Sử dụng Object.assign () để sao chép và hợp nhất các đối tượng

 // cloning objects const obj = ( name: "Alan Turing", age: 120, ); let newObject = (); const copy = Object.assign(newObject, obj); // modifies the target object console.log(newObject); // returns the modified object console.log(copy); // merging objects const o1 = ( a: 1, b: 2, c: 3 ); const o2 = ( b: 12, c: 13 ); const o3 = ( c: 23 ); // Earlier source keys are overwritten by later sources const o4 = Object.assign((), o1, o2, o3); console.log(o4); // ( a: 1, b: 12, c: 23 )

Đầu ra

 (tên: 'Alan Turing', tuổi: 120) (tên: 'Alan Turing', tuổi: 120) (a: 1, b: 12, c: 23)

Lưu ý ở đây rằng nếu giá trị nguồn là một tham chiếu đến một đối tượng, nó chỉ sao chép giá trị tham chiếu.

Ngoài ra, thuộc tính của các nguồn sau này sẽ ghi đè lên các thuộc tính trước đó.

Ví dụ 2: Sử dụng Object.assign ()

 const obj = Object.create( ( a: 1 ), ( // a is on obj's prototype chain. b: ( value: 2, // b is a non-enumerable property. ), c: ( value: 3, enumerable: true, // c is an own enumerable property. ), ) ); let copy = Object.assign((), obj); console.log(copy); // ( c: 3 ) copy = Object.assign(copy, "abc", 100, null); console.log(copy); // ( '0': 'a', '1': 'b', '2': 'c', c: 3 )

Đầu ra

 (c: 3) ('0': 'a', '1': 'b', '2': 'c', c: 3)

Như bạn có thể thấy, không thể sao chép các thuộc tính trên chuỗi nguyên mẫu và các thuộc tính không liệt kê được.

Ngoài ra, các nguyên thủy sẽ được bao bọc cho các đối tượng, null và undefined bị bỏ qua.

Vì chỉ các chuỗi có thuộc tính liệt kê, chúng được sao chép sang đối tượng đích.

Đề xuất Đọc: Đối tượng Javascript defineProperties ()

thú vị bài viết...