Prototype là định nghĩa chủ quản trong JavaScript cùng là nguyên tắc đặc biệt quan trọng vào vấn đề triển khai mô hình OOP vào JavaScript (tuy vậy không thực thụ hoàn chỉnh nlỗi trong các ngôn từ class-based khác), do nlỗi đang biết, vào JavaScript, không có định nghĩa class nhỏng những ngữ điệu phía đối tượng người sử dụng khác ví như Java xuất xắc C#. Bài viết này đã trình bày qua quýt về tư tưởng này.

Bạn đang xem: Prototype javascript là gì

Prototype object

Để dễ dàng nắm bắt, họ lưu ý function sau:

function Person(firstName, lastName) this.firstName = firstName; this.lastName = lastName;lúc function Person được chế tạo ra, mang định nó sẽ có một property mang tên là prototype (lưu ý là function vào JavaScript cũng là một trong những object). Property này là 1 trong những object cơ mà lúc đầu chỉ có cất một property là constructor trỏ ngược chở lại function Person. Và lúc function Person này được hotline cùng với trường đoản cú khóa new, object mới được sản xuất đã kế thừa tất cả những property trường đoản cú Peron.prototype. Để khám nghiệm, họ sản xuất Person.prototype một method là showFullName() nhỏng sau:

Person.prototype.showFullName = function() console.log(this.firstName + " " + this.lastName);var justin = new Person("Justin", "Vo");console.log(justin); // Person firstName: "Justin", lastName: "Vo"justin.showFullName(); // Justin VoNgười ta còn gọi Person.prototype là prototype object hay gọn gàng hơn là prototype của object justin, cũng giống như bất kỳ object như thế nào được sản xuất cùng với cú pháp new Person(...).

var david = new Person("David", "Truong");console.log(david); // Person firstName: "David", lastName: "Truong"david.showFullName(); // David TruongThật ra chúng ta có thể knhì báo method showFullName() ngay phía bên trong function Person. Tuy nhiên, vì chưng method showFullName() là như thể nhau ở đầy đủ object, cần bọn họ gửi nó lên Person.prototype để những object thừa kế lại (nguyên lý Don"t Repeat Yourself - DRY). Và này cũng là 1 trong trong số các best practice vào JavaScript: constructor chỉ khởi sản xuất các property riêng lẻ cho mỗi object được chế tác, còn những method vận dụng tầm thường mang lại số đông object sẽ được tạo thành nghỉ ngơi prototype.

function Person(firstName, lastName) this.firstName = firstName; this.lastName = lastName; this.friends = <>;Person.prototype.showFullName = function() console.log(this.firstName + " " + this.lastName);Person.prototype.addFriover = function(friend) this.friends.push(friend);var vancanh = new Person("Canh", "Dinh");var justin = new Person("Justin", "Vo");var micheal = new Person("Micheal", "Huynh");console.log(vancanh.friends); // <>;vancanh.addFriend(justin);vancanh.addFriend(micheal);console.log(vancanh.friends); // Các object mang định bao gồm sẵn trong JavaScript cũng khá được xây đắp Theo phong cách giống như như bên trên. lấy ví dụ, prototype của những object được chế tác với cú pháp new Object() hoặc là Object.prototype, các array được tạo ra với cú pháp new Array() hoặc <> là Array.prototype và giống như như thế cho các object khác như RegExp giỏi Date. Object.prototype được thừa kế vị đều object cùng bản thân nó không có prototype (có thể nói, prototype của nó là null).

Xem thêm: Diễn Viên Kiên Hoàng Và Vợ Hot Girl Heo Mi Nhon Tên Thật Của Các Bé Là Gì Chưa?

Thực tế thì chúng ta bắt buộc truy cập được prototype của một object cùng cũng không quan trọng phải sử dụng mang đến nó, mặc dù, ví dụ như vào Chrome, nó cho phép bọn họ truy vấn vào prototype của một object thông qua một property "giả" là __proto__.

*

Prototype chain

Cơ chế prototype chain cực kỳ đối chọi giản: Khi bọn họ truy cập vào một trong những property của một object, JavaScript engine vẫn kiếm tìm property đó bên phía trong thiết yếu object, nếu như không tồn tại nó đã search lên trên mặt prototype của object, với cứ đọng thường xuyên như vậy cho tới Khi gặp mặt Object.prototype thì dừng cùng cho ra kết quả (undefined trường hợp không kiếm thấy). Ví dụ:

var obj1 = a: 1 ;var obj2 = Object.create(obj1);obj2.b = 2;console.log(obj1.a); // 1console.log(obj2.a); // 1console.log(obj2.b); // 2console.log(obj2.c); // undefinedTrong ví dụ bên trên, Object.create() sẽ tạo một object bắt đầu obj2 cùng với prototype là obj1. Và như đang thấy, tuy vậy obj2 không có property a, nhưng họ vẫn có thể truy cập nó dựa vào bề ngoài prototype chain.

Xem thêm: Khám Phá Facebook Graph Facebook Là Gì, Hướng Dẫn Sử Dụng Graph Api Facebook Toàn Tập

Kết

Mình xin tạm dừng bài viết tại đây vị có lẽ đã tương đối dài. Trên phía trên tôi đã cố gắng trình bày về prototype Theo phong cách dễ hiểu. Hi vọng qua nội dung bài viết này sẽ giúp đỡ bạn phát âm hơn về tư tưởng prototype trong JavaScript.


Chuyên mục: Ý NGHĨA
Bài viết liên quan

Trả lời

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 *