JavaScript có lớp Object với nhiều phương thức thao tác đối tượng. Bài này xem phương thức Object.assign() và demo cách dùng.
Chút nền tảng
Nhắc lại đối tượng là kiểu dữ liệu JavaScript, giống dictionary Python, có cặp key:value. Giả sử đối tượng, gọi Harry. Có cặp key:value như:
let Harry = { firstName: 'Harry', lastName: 'Potter', age: 11, house: 'Gryffindor', pet: { name: 'Hedwig', animal: 'owl' } };
Quy tắc cơ bản: tên thuộc tính bên trái dấu hai chấm là key, bên phải là value. Khá trực quan – chỉ thuộc tính cuối hơi rắc rối: pet. Pet vẫn key. Value tuy nhiên là đối tượng có hai cặp key:value nữa. Đây là đối tượng lồng nhau (nested object).
Object.assign(target, …sourceObjs);
Có phương thức Object assign() lấy một hoặc nhiều đối tượng nguồn sao chép vào đối tượng đích. Đi thẳng code xem nó làm gì:
let hpChar = { firstName: 'Harry', lastName: 'Potter', age: 11, house: 'Gryffindor', pet: { name: 'Hedwig', animal: 'owl' } } Object.assign({}, hpChar); console.log(hpChar, '\n'); Object.assign(hpChar, { firstName: 'Hermione', lastName: 'Grainger', pet: { name: 'Crookshanks', animal: 'cat' } } ); console.log(hpChar)
Đi qua code. Bắt đầu đối tượng literal hpChar. hpChar có firstName, lastName, age, house, pet. Thuộc tính pet là đối tượng lồng với key/value riêng.
Tiếp, instance đầu phương thức chúng ta nói. Object.assign nhận hai hoặc nhiều tham số. Thứ nhất luôn là đối tượng đích gán giá trị. Instance này, đối tượng rỗng.
Tham số hai là đối tượng định nghĩa trên. Là nguồn sao chép gán vào đích (tham số đầu).
Dòng sau log kết quả console:
81% of participants stated they felt more confident about their tech job prospects after attending a bootcamp. Get matched to a bootcamp today.
The average bootcamp grad spent less than six months in career transition, from starting a bootcamp to finding their first job.
{ firstName: 'Harry', lastName: 'Potter', age: 11, house: 'Gryffindor', pet: { name: 'Hedwig', animal: 'owl' } }
Khác biệt không lớn, phải không? Vì gán hpChar vào đối tượng rỗng – về cơ bản clone đối tượng. Làm lại nhưng thay đổi giá trị? Thay đối tượng rỗng bằng hpChar – lần này đích. Thay đổi giá trị tham số hai. Thoải mái thay giá trị miễn giữ key giống.
Đây giá trị thay thế. Nếu giá trị đích không cần đổi, không cần gọi rõ giá trị nguồn.
Object.assign(hpChar, { firstName: 'Hermione', lastName: 'Grainger', pet: { name: 'Crookshanks', animal: 'cat' } } );
Lần hai log kết quả console, trả về đối tượng đích, ghi đè thuộc tính giá trị mới. Console hiện:
{ firstName: 'Hermione', lastName: 'Grainger', age: 11, house: 'Gryffindor', pet: { name: 'Crookshanks', animal: 'cat' } }
Đây là gộp hai đối tượng cùng thuộc tính. Giờ gộp ba đối tượng thuộc tính khác nhau? Dự đoán gì xảy ra?
var obj1 = { foo: 1 } var obj2 = { bar: 2 } var obj3 = { baz: 3 } Object.assign(obj1, obj2, obj3) console.log(obj1);
Obj1 đích. Obj2, obj3 nguồn. Gộp vào đích. Vì không thuộc tính trùng, tất cả gộp vào obj1 với giá trị tương ứng.
{ foo: 1, bar: 2, baz: 3 }
Có nó! Triển khai Object.assign() hoạt động. Khi hiểu khái niệm, bạn gần hơn học framework JavaScript!
Sẵn sàng thêm?
Xem hướng dẫn sau nghiên cứu thêm…
JavaScript Object.keys()
A Step-By-Step Guide to JavaScript Let
JavaScript typeof
JavaScript String Contains: Step-By-Step Guide
JavaScript Variables