Object trong JavaScript là tập hợp các cặp key/value. Các giá trị có thể bao gồm các thuộc tính và phương thức, chúng còn có thể chứa tất cả các loại dữ liệu JavaScript khác, chẳng hạn như string, số và Booleans.
Bài viết này sẽ tổng hợp các phương thức built-in object quan trọng. Bên cạnh các phương thức, bài viết còn mang đến cho bạn những ví dụ minh họa cụ thể cho từng trường hợp.
1.Object.create()
Phương thức Object.create() này được sử dụng để tạo một object mới và liên kết nó với nguyên mẫu của một object hiện có.
Chúng ta có thể tạo một job thể hiện object và mở rộng nó sang một object cụ thể hơn.
// Initialize an object with properties and methodsconst job = { position: 'cashier', type: 'hourly', isAvailable: true, showDetails() { const accepting = this.isAvailable ? 'is accepting applications' : "is not currently accepting applications";
console.log(`The ${this.position} position is ${this.type} and ${accepting}.`); }};
// Use Object.create to pass propertiesconst barista = Object.create(job);
barista.position = "barista";barista.showDetails();
OutputThe barista position is hourly and is accepting applications.
Object barista hiện có một thuộc tính là — position— nhưng tất cả các thuộc tính và phương thức khác từ job đó đều có sẵn thông qua nguyên mẫu. Object.create() rất hữu ích trong việc giữ code DRY bằng cách giảm thiểu trùng lặp.
2.Object.keys()
Object.keys() tạo một mảng chứa các key của một object.
Chúng ta có thể tạo một object và print array của key.
// Initialize an objectconst employees = { boss: 'Michael', secretary: 'Pam', sales: 'Jim', accountant: 'Oscar'};
// Get the keys of the objectconst keys = Object.keys(employees);
console.log(keys);
Output["boss", "secretary", "sales", "accountant"]
Khi Object.keys chuyển đổi các key object của bạn thành một array key, phương thức array forEach() có thể được sử dụng để lặp lại các key và giá trị.
// Iterate through the keysObject.keys(employees).forEach(key => { let value = employees[key];
console.log(`${key}: ${value}`);});
Outputboss: Michael
secretary: Pam
sales: Jim
accountant: Oscar
Object.keys cũng rất có ích trong việc kiểm tra độ dài của array được chuyển đổi bằng thuộc tính length.
// Get the length of the keysconst length = Object.keys(employees).length;
console.log(length);
Output4
Sử dụng thuộc tính length, chúng ta có thể đếm các thuộc tính 4 của employees.
3.Object.values()
Object.values() tạo một mảng chứa các giá trị của một object.
// Initialize an objectconst session = { id: 1, time: `26-July-2018`, device: 'mobile', browser: 'Chrome'};
// Get all values of the objectconst values = Object.values(session);
console.log(values);
Output[1, "26-July-2018", "mobile", "Chrome"]
Object.keys() và Object.values() cho phép bạn trả lại dữ liệu từ một object.
4.Object.entries()
Object.entries() tạo một mảng lồng nhau của các cặp key/value của một object.
// Initialize an objectconst operatingSystem = { name: 'Ubuntu', version: 18.04, license: 'Open Source'};
// Get the object key/value pairsconst entries = Object.entries(operatingSystem);
console.log(entries);
Output[
["name", "Ubuntu"]
["version", 18.04]
["license", "Open Source"]
]
Khi chúng ta có các mảng cặp key/value, chúng ta có thể sử dụng phương thức forEach() để lặp lại và chạy với kết quả.
// Loop through the resultsentries.forEach(entry => { let key = entry[0]; let value = entry[1];
console.log(`${key}: ${value}`);});
Outputname: Ubuntu
version: 18.04
license: Open Source
Phương thức Object.entries() sẽ chỉ trả về các thuộc tính riêng của object và không trả về bất kỳ thuộc tính nào có thể được kế thừa thông qua nguyên mẫu của nó.
5.Object.assign()
Object.assign() được sử dụng để sao chép các giá trị từ object này sang object khác.
Chúng ta có thể tạo hai object và merge chúng bằng Object.assign().
// Initialize an objectconst name = { firstName: 'Philip', lastName: 'Fry'};
// Initialize another objectconst details = { job: 'Delivery Boy', employer: 'Planet Express'};
// Merge the objectsconst character = Object.assign(name, details);
console.log(character);
Output{firstName: "Philip", lastName: "Fry", job: "Delivery Boy", employer: "Planet Express"}
Bạn cũng có thể sử dụng spread operator (...) để làm những task tương tự. Trong code bên dưới, chúng ta sẽ sửa đổi cách khai báo character thông qua việc merge các object name và details.
// Initialize an objectconst name = { firstName: 'Philip', lastName: 'Fry'};
// Initialize another objectconst details = { job: 'Delivery Boy', employer: 'Planet Express'};
// Merge the object with the spread operatorconst character = {...name, ...details}
console.log(character);
Output{firstName: "Philip", lastName: "Fry", job: "Delivery Boy", employer: "Planet Express"}
Cú pháp spread này theo định nghĩa trong object còn được gọi là shallow-cloning.
6.Object.freeze()
Object.freeze() ngăn việc sửa đổi các thuộc tính và giá trị của một object, đồng thời ngăn các thuộc tính được thêm hoặc xóa khỏi một object.
// Initialize an objectconst user = { username: 'AzureDiamond', password: 'hunter2'};
// Freeze the objectconst newUser = Object.freeze(user);
newUser.password = '*******';newUser.active = true;
console.log(newUser);
Output{username: "AzureDiamond", password: "hunter2"}
Ví dụ đã cố ghi đè mật khẩu hunter2 bằng *******, nhưng thuộc tính password vẫn giữ nguyên. Bên cạnh đó cũng đã cố gắng thêm một thuộc tính mới active nhưng nó không được thêm vào.
Object.isFrozen() tồn tại để xác định xem một object có bị đóng băng hay không và trả về một Boolean.
7.Object.seal()
Object.seal() ngăn các thuộc tính mới được thêm vào một object, nhưng cho phép sửa đổi các thuộc tính hiện có. Phương pháp này tương tự như Object.freeze(). Đừng quên làm mới console của bạn trước khi triển khai code bên dưới để tránh bị lỗi nhé.
// Initialize an objectconst user = { username: 'AzureDiamond', password: 'hunter2'};
// Seal the objectconst newUser = Object.seal(user);
newUser.password = '*******';newUser.active = true;
console.log(newUser);
Output{username: "AzureDiamond", password: "*******"}
Như bạn có thể thấy thuộc tính mới active không được thêm vào object đã được sealed, nhưng password thuộc tính đã được thay đổi thành công.
8.Object.getPrototypeOf()
Object.getPrototypeOf() được sử dụng để lấy internal hidden [[Prototype]] của một object, cũng có thể truy cập thông qua thuộc tính __proto__.
Trong ví dụ này, chúng ta có thể tạo một mảng có quyền truy cập vào Array Nguyên mẫu.
const employees = ['Ron', 'April', 'Andy', 'Leslie'];
Object.getPrototypeOf(employees);
Output[constructor: ƒ, concat: ƒ, find: ƒ, findIndex: ƒ, pop: ƒ, …]
Chúng ta có thể thấy trong đầu ra rằng nguyên mẫu của mảng employees có quyền truy cập vào pop, find và các phương thức nguyên mẫu khác của Array. Chúng ta có thể xác nhận điều này bằng cách test nguyên mẫu employees với Array.prototype.
Object.getPrototypeOf(employees) === Array.prototype;
Outputtrue
Phương pháp này giúp ích trong việc lấy thêm thông tin về một object hoặc đảm bảo chúng có quyền truy cập vào nguyên mẫu của một object khác.
Ngoài ra còn có một phương pháp Object.setPrototypeOf(), phương pháp này sẽ giúp thêm một nguyên mẫu vào một object khác.
TẠO TÀI KHOẢN MỚI: XEM FULL “1 TÁCH CODEFEE” - NHẬN SLOT TƯ VẤN CV TỪ CHUYÊN GIA - CƠ HỘI RINH VỀ VOUCHER 200K




