Các objects Javascript mở rộng

Các objects Javascript mở rộng

Một hoạt động phổ biến trong các chương trình Javascript là cần copy các đặc tính của một object sang object khác.
Nó là dễ để làm cái đó với code giống cái này:

let target = {x: 1}, source = {y: 2, z: 3};
for(let key of Object.keys(source)) {

target[key] = source[key];

}
target // => {x: 1, y: 2, z: 3}

Nhưng vì đây là một hoạt động phổ biến, các khung Javascript khác nhau đã định nghĩa các hàm tiện ích, thường tên
extend(), để thực hiện hoạt động copy này. Cuối cùng, trong ES6, khả năng này đi vào ngôn ngữ Javascript lõi
trong dạng Object.assign().
Object.assign() mong đợi 2 hay nhiều hơn các objects như các đối số của nó. Nó điều chỉnh và trả về đối số đầu
tiên, cái là object mục tiêu, nhưng không thay đổi đối số thứ hai hay bất cứ các đối số tiếp theo, cái là các
objects nguồn. Cho mỗi object nguồn, nó copy các đặc tính bản thân lặp qua được của object đó (bao gồm những cái
các tên của chúng là các kí hiệu) vào object mục tiêu. Nó xử lí các objects nguồn trong trật tự danh sách đối số
để rằng các đặc tính trong object nguồn đầu tiên ghi đè các đặc tính theo cùng tên trong object mục tiêu và các
đặc tính trong object nguồn thứ hai (nếu có một cái) ghi đè các đặc tính theo cùng tên trong object nguồn đầu tiên.
Object.assign() copy các đặc tính với các hoạt động get và set đặc tính thông thường, nên nếu một object nguồn
có một phương thức getter hay object mục tiêu có một phương thức setter, chúng sẽ được khởi động suốt quá trình copy,
nhưng chúng sẽ không được copy bản thân chúng.

Chia sẻ