Kế thừa nguyên mẫu JavaScript

JavaScript khá độc đáo trong bối cảnh ngôn ngữ lập trình phổ biến vì cách sử dụng kế thừa nguyên mẫu của nó. Hãy cùng tìm hiểu điều đó có nghĩa là gì

JavaScript khá độc đáo trong bối cảnh ngôn ngữ lập trình phổ biến vì cách sử dụng kế thừa nguyên mẫu của nó.

Trong khi hầu hết các ngôn ngữ hướng đối tượng sử dụng mô hình kế thừa dựa trên lớp, JavaScript dựa trênmô hình kế thừa nguyên mẫu.

Điều đó có nghĩa là gì?

Mọi đối tượng JavaScript đều có một thuộc tính, được gọi làprototype, trỏ đến một đối tượng khác.

Đối tượng khác nhau này lànguyên mẫu đối tượng.

Đối tượng của chúng ta sử dụng nguyên mẫu đối tượng đó để kế thừa các thuộc tính và phương thức.

Giả sử bạn có một đối tượng được tạo bằng cú pháp theo nghĩa đen của đối tượng:

const car = {}

hoặc một cái được tạo bằngnew Objectcú pháp:

const car = new Object()

trong mọi trường hợp, nguyên mẫu củacarObject:

Nếu bạn khởi tạo một mảng, là một đối tượng:

const list = []
//or
const list = new Array()

nguyên mẫu làArray.

Bạn có thể xác minh điều này bằng cách kiểm tra vớiObject.getPrototypeOf()Object.prototype.isPrototypeOf()phương pháp:

const car = {}
const list = []

Object.getPrototypeOf(car) === Object.prototype Object.prototype.isPrototypeOf(car)

Object.getPrototypeOf(list) === Array.prototype Array.prototype.isPrototypeOf(list)

Tất cả các thuộc tính và phương thức của nguyên mẫu đều có sẵn cho đối tượng có nguyên mẫu đó:

Object.prototypelà nguyên mẫu cơ sở của tất cả các đối tượng:

Object.getPrototypeOf(Array.prototype) == Object.prototype

Nếu bạn thắc mắc nguyên mẫu của Object.prototype là gì, thì không có nguyên mẫu nào: đó lànull. Đó là một bông tuyết đặc biệt ❄️.

Ví dụ trên mà bạn đã thấy là một ví dụ vềchuỗi nguyên mẫutại nơi làm việc.

Tôi có thể tạo một đối tượng mở rộng Mảng và bất kỳ đối tượng nào tôi khởi tạo bằng cách sử dụng nó, sẽ có Mảng và Đối tượng trong chuỗi nguyên mẫu của nó và kế thừa các thuộc tính và phương thức từ tất cả các đối tượng tổ tiên.

Ngoài việc sử dụngnewtoán tử để tạo một đối tượng hoặc sử dụng cú pháp chữ cho các đối tượng và mảng, bạn có thể khởi tạo một đối tượng bằng cách sử dụngObject.create().

Đối số đầu tiên được truyền là đối tượng được sử dụng làm nguyên mẫu:

const car = Object.create({})
const list = Object.create(Array)

Hãy chú ý vì bạn có thể khởi tạo một mảng bằng cách sử dụng

const list = Object.create(Array.prototype)

và trong trường hợp nàyArray.isPrototypeOf(list)là sai, trong khiArray.prototype.isPrototypeOf(list)là đúng.

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: