Home Javascript Prototype Javascript là gì? Tại sao prototype quan trọng?

Prototype Javascript là gì? Tại sao prototype quan trọng?

0
Prototype Javascript là gì? Tại sao prototype quan trọng?

Prototype là một đối tượng quan trọng và cơ bản nhất trong ngôn ngữ Javascript. Nếu bạn đang muốn tìm hiểu về ngôn ngữ Javascript, bạn bắt buộc phải biết Prototype Javascript là gì và tại sao prototype quan trọng trong Javascript.

Trong bài viết dưới đây chúng ta hãy cùng nhau tìm hiểu về khái niệm prototype và tại sao đây lại là thành phần cốt lõi đối với ngôn ngữ Javascript.

Prototype Javascript là gì?

Có rất nhiều định nghĩa về Prototype Javascript là gì nhưng bạn nên hiểu theo cách đơn giản nhất như sau:

Prototype Javascript là một trong các framework javascript. Nó được xây dựng nhằm phát triển các ứng dụng trên website một cách đơn giản và dễ dàng hơn. 

Prototype rất được các lập trình viên ưa chuộng để ứng dụng rộng rãi. Bởi nó sở hữu nhiều các phần dễ sử dụng với mục đích phát triển các đối tượng, lớp hoặc thư viện Ajax. Mỗi object trong Javascript đều có một thuộc tính và người ta sẽ định nghĩa đó là thuộc tính prototype. 

Điều đó cũng có nghĩa là các thuộc tính sẽ mang giá trị tương đương với một object. Hoặc nói cách khác là các object có thể kế thừa những thuộc tính hay phương thức bên trong các prototype của mình.

Có thể đọc đến đây bạn vẫn sẽ cảm thấy định nghĩa về Prototype Javascript là gì hơi khó hiểu. Vậy đọc phần tiếp theo để tìm hiểu về kĩ hơn một chút!

prototype là gì, prototype javascript là gì
Định nghĩa Prototype Javascript là gì?

Sơ lược Prototype trong Javascript

Để thực thi mô hình được gọi là OOP thì Prototype là yếu tố quan trọng, cơ chế cốt lõi đối với JavaScript. Nếu có một hàm (function) được tạo ra nó sẽ là một object và có một prototype tương ứng với nó.

Ban đầu function sẽ có một constructor trỏ ngược lại. Nhưng khi nó được định nghĩa với một từ khoá mới thì object vừa được tạo sẽ kế thừa tất cả những thuộc tính từ Prototype của nó.

Trong JavaScript, các constructor tạo ra những thuộc tính đặc biệt cho từng object khác nhau. Tuy nhiên, phương thức áp dụng cụ thể thì phụ thuộc vào prototype. Ngay cả các object mặc định của JavaScript cũng được tạo ra với phương thức tương tự như trên.

Có một thực tế là chúng ta sẽ không cần và không thể nào truy cập vào prototype của object nào đó. Điều này không thể trong Javascript nhưng nó có thể thực hiện được với Chrome. Khi ta truy cập vào property của một object cụ thể thì JavaScript engine sẽ tiến hành tìm kiếm property này trong object ban đầu. Quá trình này được gọi là cơ chế prototype chain.

prototype javascript, prototyping là gì
Đối tượng mới kế thừa tất cả những thuộc tính của hàm khởi tạo.

Một số đặc tính của Prototype

Đặc tính của Prototype Javascript là gì? Đặc tính của Prototype trong Javascript chính là cơ chế kế thừa. Tính kế thừa này được thể hiện cụ thể như sau:

  • Một là, mỗi object (ngoại trừ các instance object) trong Javascript ví dụ như Hàm (Function) đều có một thuộc tính (property) riêng biệt và người ta sẽ định nghĩa đó là thuộc tính Prototype. Điều đó cũng có nghĩa là các thuộc tính sẽ mang giá trị tương đương với một object hoặc nói cách khác là các object có thể kế thừa những thuộc tính hay phương thức (Method) bên trong các prototype của nó.
  • Hai là, chúng ta sẽ dùng một hàm để tạo ra mẫu ban đầu cho các object điều đó dẫn đến các hàm này sẽ có thuộc tính prototype đặc biệt: Khi thêm các thuộc tính hay là phương thức vào thuộc tính prototype của hàm ban đầu thì theo cơ chế kế thừa tất cả những đối tượng vừa được tạo mới (new object) cũng sẽ sở hữu giá trị tương đương như trong thuộc tính prototype của function khởi tạo này.
  • Ba là, trong Javascript các đặc tính của object sẽ trỏ đến một giá trị nhất định mà nó đang kế thừa thuộc tính. Và khi nó được gắn với một định nghĩa mới thì object vừa được định nghĩa cũng sẽ kế thừa các giá trị và thuộc tính này.

Đây thực chất là hệ thống lại một cách chi tiết và dễ hiểu hơn những gì chúng ta đã thảo luận trong 2 phần Prototype Javascript là gì và sơ lược về Prototype trong Javascript.

prototype, prototype trong javascript
Đặc tính của Prototype trong Javascript chính là cơ chế kế thừa

3 bước để tạo Prototype

Những thông tin ở trên đã cho chúng ta biết rằng một hàm khởi tạo cũng được xem như có giá trị tương đương với một prototype. Bởi vậy trong các cách để tạo ra một prototype, các đơn giản nhất là chúng ta tiến hành khai báo một hàm khởi tạo. Các bước cụ thể của quá trình tạo prototype cụ thể như sau:

  • Bước 1: Tạo ra một hàm khởi tạo với các thuộc tính cơ bản như age, name, và height bằng một đoạn code ngắn gọn. Chúng ta có thể thêm một số thuộc tính bên ngoài vào trong những thuộc tính prototype ban đầu của hàm khởi tạo.
  • Bước 2: Khi đã khai báo đủ 3 thuộc tính của hàm khởi tạo chúng ta truy cập vào prototype object của đối tượng mới mà chúng ta vừa tạo (Lưu ý rằng chúng ta có 3 cách để tạo ra 1 đối tượng mới đó là dùng object literal hay dùng chính constructor của đối tượng hoặc chúng ta tự xây dựng một hàm khởi tạo mới).
  • Bước 3: Kiểm tra cả 3 thuộc tính mà chúng ta đã khai báo và đối tượng prototype trong hàm khởi tạo.
prototype javascript, javascript prototype
Các bước cụ thể để tạo ra 1 prototype.

Tại sao Prototype lại quan trọng trong Javascript?

Dựa vào cơ chế kế thừa prototype của function trong Javascript mà prototype đã trở nên quan trọng. Trong các phiên bản trước đây Javascript đã không thể thực hiện sự kế thừa nhằm mở rộng các ứng dụng. 

Điều này rất bất lợi vì các ngôn ngữ OOP khác đều có các class để thực hiện việc kế thừa. Khi có prototype thì Javascript hoàn toàn có thể thực hiện việc kế thừa như bất kỳ ngôn ngữ nào khác theo cơ chế được gọi là prototype-based.

kế thừa trong javascript, js prototype
Cơ chế kế thừa prototype của function trong Javascript

Khi chúng ta cần truy cập tới các thuộc tính hay phương phức của một đối tượng cụ thể sẽ thấy tầm quan trọng của Prototype. Đặc tính prototype của mỗi đối tượng cụ thể (hay chúng ta thường biết đến với cách gọi là prototype object) sẽ đóng vai trò một “object cha”. Tại object ban đầu này sẽ chứa tất cả các thuộc tính hay phương thức sẽ được kế thừa ở trong “object con”. 

Khi ta cần tìm thuộc tính của một đối tượng Javascript thì đầu tiên nó sẽ tìm bên trong các thuộc tính riêng của object này. Trong trường hợp không tìm thấy thì nó cần truy cập vào trong prototype của đối tượng. 

Quá trình này sẽ lặp lại trong chuỗi prototype cho đến khi tìm được thuộc tính cần thiết. Khi ta kết hợp điều này với thuộc tính prototype của một hàm chúng ta đã tạo nên cơ chế kế thừa được gọi là prototype-based trong Javascript.

Tại sao nên dùng Prototype?

Đương nhiên phải nhìn nhận những lợi ích và ứng dụng thực tế của prototype thì người ta mới sử dụng nó.

Thực tế thì Prototype được tạo ra để bổ sung cho những thiếu sót của JavaScript so với những ngôn ngữ như Java và C#. Bắt buộc chúng ta sẽ phải sử dụng prototype để thực hiện kế thừa các trường/ hàm thuộc về một object trong một ngôn ngữ không có class như JavaScript.

Tất nhiên chúng ta cũng có thể hiểu prototype trong JavaScript có giá trị tương đương với class ở trong các ngôn ngữ lập trình khác. Và tại sao nên dùng Prototype?

Câu trả lời là nếu không dùng Prototype thì JavaScript  sẽ không thể và không bao giờ có sự kế thừa (inheritance) để cạnh tranh với các ngôn ngữ lập trình phổ biến hơn.

prototype javascript, prototype trong javascript
Prototype bổ sung cho những thiếu sót của JavaScript.

Kết luận

Bài viết “Prototype Javascript là gì? Tại sao prototype quan trọng?” có lẽ nên kết thúc tại đây. Có thể nói JavaScript là một ngôn ngữ còn nhiều thiếu sót và Prototype Javascript là gì thực sự là câu hỏi khó để trả lời một cách rõ ràng và dễ hiểu.

Tuy nhiên, một ngôn ngữ lập trình sẽ luôn được cải thiện mỗi ngày để phù hợp hơn với nhu cầu sử dụng.

Hi vọng rằng sau bài viết này, bạn sẽ tìm hiểu nhiều hơn về Prototype Javascript. Từ đó, có thể góp phần phát triển nó trong tương lai!

LEAVE A REPLY

Please enter your comment!
Please enter your name here