Tham chiếu Object
Khi gán lại object bởi một biến khác thì các biến này đều là tham chiếu tới object thật. Khi thay đổi nội dung của object qua một biến thì các biến còn lại cũng bị ảnh hưởng.
|
|
Object cloning
Nhân bản (cloning) object là tạo một object giống object trước đó. Vì toán tử gán chỉ tham chiếu tới object, muốn tạo tạo object nhân bản chúng ta phải dùng cách khác. Trong trường hợp object không lồng nhau, chúng ta có thể lặp qua một đối tượng để lấy các thuộc tính nhằm tạo object mới.
|
|
Cách khác là sử dụng Object.assign
, hàm này cũng lặp qua các thuộc tính của đối tượng và copy các thuộc tính như ví dụ ở trên. Tham số của hàm là object khởi tạo, và object mà chúng ta muốn copy các thuộc tính qua.
|
|
Cách mới nhất là dùng toán tử spare operator (được sử dụng từ phiên bản ES2015 trở đi).
|
|
Deep cloning
Trong trường hợp muốn clone object lồng nhau thì không sử dụng cách trên được. Cách phổ biến là sử dụng hàm cloneDeep từ các thư viện như Lodash.
Hoặc trong ví dụ sau chúng ta sử dụng với thư viện JSON.
|
|
Tuy nhiên cách này có nhiều hạn chế, ví dụ như không clone được các hàm trong Object.