JavaScript OOP (Nguyên mẫu) #2
Nov 27 2022
Xin chào các bạn, tôi là Bennison, Trong blog này, tôi sẽ giải thích cách OOP hoạt động trong Javascript và giải thích nó khác với OOP cổ điển như thế nào. Trước khi đọc bài viết này, vui lòng đọc blog trước của tôi về các nguyên tắc cơ bản của OOP.
![](https://post.nghiatu.com/assets/images/m/max/724/1*8Y0YXUs1uawjV9D9ytc1pQ.png)
Xin chào các bạn, tôi là Bennison, Trong blog này, tôi sẽ giải thích cách OOP hoạt động trong Javascript và giải thích nó khác với OOP cổ điển như thế nào. Trước khi đọc bài viết này, vui lòng đọc blog trước của tôi về các nguyên tắc cơ bản của OOP .
Nguyên mẫu là gì?
- Trong Javascript, chúng ta có một thứ gọi là nguyên mẫu, Trong JavaScript, mọi đối tượng sẽ được liên kết với một nguyên mẫu nhất định. Vì vậy, mỗi đối tượng có nguyên mẫu. nguyên mẫu cũng chứa các thuộc tính và phương thức.
- Ở đây, điều quan trọng là đối tượng có thể truy cập các phương thức và thuộc tính nguyên mẫu.
- Trong OOP cổ điển, một đối tượng được khởi tạo từ lớp, được gọi là khởi tạo. Ở đây, lớp chỉ là một kế hoạch chi tiết để tạo Đối tượng.
- Nhưng trong Javascript, thuật ngữ này chỉ khác. Ở đây mỗi đối tượng được liên kết với các đối tượng khác và những đối tượng đó được gọi là nguyên mẫu .
![](https://post.nghiatu.com/assets/images/m/max/724/1*PDTZ9A9SzFjD2GfEfEy2Gw.png)
- Kế thừa nguyên mẫu có nghĩa là một nguyên mẫu có chứa các phương thức và các nguyên mẫu có thể truy cập được đối với tất cả các đối tượng được liên kết với nguyên mẫu đó.
- Vì vậy, đối tượng kế thừa các phương thức và thuộc tính từ nguyên mẫu, đây là cách nó được gọi là kế thừa nguyên mẫu. sự kế thừa này khác với sự kế thừa lớp là một lớp được kế thừa từ lớp kia. Nhưng trong trường hợp này, thể hiện kế thừa từ lớp cơ sở.
- Trong hình trên, trong javascript OOP mũi tên hướng lên trên, điều này có nghĩa là đối tượng ủy quyền các hành vi của nó cho các nguyên mẫu.
- Trong OOP cổ điển, các phương thức được sao chép từ lớp sang các thể hiện (đối tượng).
const numbers = [1, 2, 3, 4,5];
numbers.map((num) => num * 2)
![](https://post.nghiatu.com/assets/images/m/max/724/1*H8mqwDL6BVRe8BuAb_P2ww.png)
![](https://post.nghiatu.com/assets/images/m/max/724/1*IYY6zh3oEnFdmO4tbAiRpw.png)
- Một hàm tạo được sử dụng để tạo các đối tượng từ các hàm. đây là cách các đối tượng tích hợp sẵn như các phương thức Array và map được triển khai.
- Đây là một giải pháp thay thế hiện đại cho hàm tạo. Các lớp ES6 hoạt động giống như chức năng xây dựng. Lớp ES6 không hoạt động như một OOP cổ điển. Phía sau, các lớp ES6 được triển khai với các hàm Constructor.
class User {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
getFullName() {
console.log(this.firstName + ' ' + this.lastName);
}
}
const user = new User('Bennison', 'J');
console.log(user); // { firstName: 'Bennison', lastName: 'J' }
console.log(user.hasOwnProperty('firstName')); // true
console.log(user.hasOwnProperty('getFullName')); // false
- Phương thức “object.create()” là cách dễ dàng nhất để liên kết một đối tượng với một đối tượng nguyên mẫu.
const objOne = {
firstName: 'Bennison',
lastName: 'J',
getFullName: function () {
console.log(this.firstName + ' ' + this.lastName);
}
};
const objTwo = Object.create(objOne);
console.log(objTwo); // {}
objTwo.getFullName(); // Bennison J
- Tôi hy vọng, trong Blog này, chúng ta đã học được những kiến thức cơ bản về kế thừa nguyên mẫu trong Javascript, nếu bạn không hiểu các ví dụ trên, đừng lo lắng, tôi sẽ giải thích thêm về các khái niệm này trong các blog sắp tới của mình. Cảm ơn đã đọc blog này, hẹn gặp lại .