Prototype là gì? Cách thiết lập Prototype

nguyên mẫu là một khái niệm cốt lõi trong javascript, nhưng nó vẫn còn rất xa lạ đối với các lập trình viên mới làm quen. Tuy nhiên, kiến ​​thức này là kiến ​​thức cốt lõi của lập trình. Vậy nguyên mẫu là gì và cách thiết lập nó như thế nào? Bài viết dưới đây sẽ giải đáp thắc mắc này cùng với những thông tin liên quan đến ngôn ngữ.

Nguyên mẫu là gì?

nguyên mẫu là một cơ chế để triển khai mô hình oop của ngôn ngữ lập trình javascript, trong đó các đối tượng (đối tượng) kế thừa các đặc điểm của nhau. Mọi đối tượng trong javascript đều có một thuộc tính bên trong được gọi là nguyên mẫu.

Theo mặc định, ngôn ngữ này được liên kết với tất cả các hàm và đối tượng mà các thuộc tính nguyên mẫu của hàm có thể truy cập và sửa đổi được. Thuộc tính nguyên mẫu của một đối tượng là vô hình.

Nó là một loại đối tượng đặc biệt có thể có các thuộc tính bổ sung được đính kèm sẽ được chia sẻ giữa tất cả các trường hợp của hàm tạo.

Nói cách khác, nguyên mẫu là một đối tượng trong javascript.

Nguyên mẫu đối tượng

Thuộc tính nguyên mẫu của đối tượng là ẩn. Để truy cập đối tượng nguyên mẫu, hãy sử dụng phương thức object.getprototypeof (obj) thay vì proto .

Đối tượng nguyên mẫu bao gồm các thuộc tính và phương thức sau:

Các phương thức của đối tượng nguyên mẫu

Chuỗi nguyên mẫu

Cơ chế chuỗi nguyên mẫu rất đơn giản: khi truy cập thuộc tính p trên đối tượng obj, javascript sẽ tìm thuộc tính đó bên trong đối tượng obj. Nếu engine không thể tìm thấy nó, nó sẽ tiếp tục tìm kiếm trong obj nguyên mẫu của đối tượng … cho đến khi nó tìm thấy object.prototype. Nếu không tìm thấy kết quả nào sau khi tìm kiếm, kết quả sẽ không xác định. Ví dụ:

Trong đoạn mã trên, câu lệnh var obj2 = object.create (obj1) sẽ tạo đối tượng obj2 bằng cách sử dụng đối tượng nguyên mẫu obj1. Nói cách khác, obj1 trở thành nguyên mẫu của obj2 theo mặc định, không phải object.prototype. Do đó, b không phải là thuộc tính của obj2, vì vậy nó vẫn có thể truy cập được thông qua chuỗi nguyên mẫu. Tuy nhiên, đối với thuộc tính c, giá trị sẽ không được xác định vì không thể tìm thấy nó trong obj1 và object.prototype.

Cách thiết lập mẫu thử nghiệm

Có nhiều cách khác nhau để đặt nguyên mẫu của một đối tượng trong javascript. Có hai phương thức thường được sử dụng: object.create () và constructor.

Sử dụng object.create

Phương thức

object.create () tạo một đối tượng mới và cho phép chỉ định một đối tượng làm nguyên mẫu của đối tượng mới.

Ví dụ:

Khi tạo đối tượng personprototype, có một phương thức tuyệt vời (). Sau đó, khi sử dụng object.create () để tạo một đối tượng mới với personprototype làm nguyên mẫu. great () bây giờ có thể được gọi trên đối tượng mới và nguyên mẫu cung cấp việc triển khai nó.

Sử dụng hàm tạo

Trong javascript, tất cả các hàm đều có một thuộc tính gọi là nguyên mẫu. Khi hàm được gọi như một phương thức khởi tạo, thuộc tính này được đặt thành nguyên mẫu của đối tượng mới được tạo (theo quy ước, trong một thuộc tính có tên là proto).

Vì vậy, nếu chúng tôi đặt nguyên mẫu của một hàm tạo, chúng tôi có thể đảm bảo rằng tất cả các đối tượng được tạo bằng hàm tạo đó đều được cung cấp cho nguyên mẫu đó:

Chúng tôi tạo ở đây:

  • Một đối tượng personprotortype với phương thức great ().
  • Một phương thức khởi tạo person () khởi tạo tên của người cần tạo.
  • Sau đó, đặt thuộc tính nguyên mẫu của hàm để trỏ đến mẫu người.

    Dòng

    cuối cùng (person.prototype.constructor = person;) đặt thuộc tính phương thức khởi tạo của nguyên mẫu hàm được sử dụng để tạo đối tượng person. Điều này là bắt buộc vì sau khi đặt person.prototype = personprototype ;. Thuộc tính này trỏ đến phương thức khởi tạo của personprototype, là một đối tượng chứ không phải là một người (vì personprtotype được xây dựng dưới dạng một đối tượng theo nghĩa đen).

    Sau mã này, các đối tượng được tạo bằng person () sẽ có personprototy làm nguyên mẫu của chúng.

    Nguyên mẫu và kế thừa

    Đây là một tính năng javascript mạnh mẽ và rất linh hoạt giúp sử dụng lại mã và soạn các đối tượng.

    Đặc biệt, Prototype cũng hỗ trợ các phiên bản cũ hơn. Tính kế thừa là một trong những đặc điểm phân biệt của nguyên mẫu.

    Tính kế thừa là một tính năng của ngôn ngữ hướng đối tượng (oop) cho phép các lập trình viên chứng minh ý tưởng rằng “một số đối tượng trong hệ thống là phiên bản chuyên biệt hơn của các đối tượng khác”.

    Ví dụ: nếu bạn đang lập mô hình cho một trường học, trường học có các giáo sư và sinh viên. Cả hai đều là người, vì vậy cả hai đều có những đặc điểm giống nhau, giống như cả hai đều có tên. Tuy nhiên, mỗi loại sẽ có những đặc điểm bổ sung, chẳng hạn như các giáo sư có nhiều môn học hơn. Trong hệ thống lập trình hướng đối tượng (oop), chúng ta có thể nói rằng cả giáo sư và sinh viên đều có các thuộc tính kế thừa từ mỗi người.

    Trong javascript, các đối tượng giáo sư và sinh viên có thể kế thừa các thuộc tính công khai nếu chúng có thể có nguyên mẫu người. Đồng thời, bổ sung và xác định lại các thuộc tính mong muốn theo nhiều cách khác nhau.

    Cách sử dụng nguyên mẫu trong javascript

    Ngôn ngữ này cho phép người dùng dễ dàng xác định các phương thức cho tất cả các trường hợp của một đối tượng. Cái hay ở đây là phương thức được áp dụng cho nguyên mẫu, vì vậy nó chỉ được lưu trữ trong bộ nhớ một lần, tuy nhiên, mọi phiên bản của đối tượng đều có thể truy cập nó.

    Ví dụ:

    Trong hàm trên, chỉ bằng cách sử dụng nguyên mẫu khi đính kèm phương thức xem, chúng tôi đã đảm bảo rằng tất cả các đối tượng thú cưng đều có quyền truy cập vào phương thức xem. Ngoài ra, chúng ta có thể sử dụng các phương pháp nguyên mẫu để tạo ra nhiều hiệu ứng hơn.

    Ví dụ: chúng tôi muốn có một đối tượng dog bổ sung và đối tượng này kế thừa mọi phương thức và thuộc tính được sử dụng trong đối tượng pet. Ngoài ra, hãy thiết lập một chức năng đặc biệt mà chỉ đối tượng con chó mới có thể truy cập.

    Trong hàm này, chúng tôi thiết lập đối tượng dog và gọi hàm pet bằng phương thức call (). Phương thức gọi cho phép gọi một hàm đích cụ thể bên trong một đối tượng bằng cách truyền vào đối tượng mà hàm sẽ được chạy (được tham chiếu bởi “this” trên dòng 10) theo sau là các đối số.

    Sau đó, cung cấp cho đối tượng con chó một phương thức gọi là sủa (chỉ đối tượng con chó mới có thể truy cập được).

    Ngôn ngữ này hoạt động tuần tự. Khi gọi pet2.view (), trước tiên nó sẽ kiểm tra xem liệu các đối tượng chó và vật nuôi đã có phương thức xem chưa. Vì con chó kế thừa vật nuôi, con vật cưng kế thừa object.prototype.

    Kết luận

    Bài viết trên dành cho thông tin chung về nguyên mẫu. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về nguyên mẫu là gì? Và hiểu được tầm quan trọng của nguyên mẫu trong javascript. Mọi thắc mắc vui lòng để lại bình luận bên dưới để mình hỗ trợ.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *