Object prototype javascript là gì, prototype là gì

OOPhường. trong Javascript

Javascript là 1 trong những ngôn ngữ dựa vào ngulặng chủng loại (prototype-based language), nó bao gồm nghĩa rằng trực thuộc tính cùng thủ tục của object hoàn toàn có thể được share thông qua những đối tượng người sử dụng bao quát (generalized objects) có chức năng không ngừng mở rộng.

Bạn đang xem: Object prototype javascript là gì, prototype là gì

Trong số những ngôn từ hướng đối tượng người sử dụng thịnh hành như Java, Pykhiêm tốn, PHP., Javascript hơi là đặc trưng, nó không có class, vậy những đặc thù của oop bên trên javascript được diễn đạt như thế nào?.


*

Trong bài viết này, ta đã tò mò cách thức thao tác của prototype (được hiểu như là thừa kế (inheritance) sinh hoạt javascript).

Prototype là gì?

Prototype là lý lẽ cơ mà các object trong javascript thừa kế những tác dụng xuất phát điểm từ một object khác.


*

Mỗi một object trong javascript đều phải có một thuộc tính nội bộ (internal property) Gọi là <>.

Chúng ta rất có thể minh chứng vấn đề đó bằng cách tạo ra một object mới.

Xem thêm: Nhà Tù Hắc Long

let a = ;

Đây là bí quyết đơn giản và dễ dàng nhất để tạo một object, hoặc một giải pháp khác là khởi sản xuất object cùng với constructor.

let x = new Object().

Dấu ngoặc knghiền nói lên rằng ở trong tính này sẽ không thể truy cập trực tiếp ở code của bọn họ. Để tiến hành câu hỏi truy vấn, ta thực hiện cách tiến hành getPrototypeOf()

Object.getPrototypeOf(x);

Output tại đây là:

constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, …

Thêm nằm trong tính prototype cho những đối tượng

Chúng ta đã cùng tìm hiểu sâu rộng cùng với ví dụ sau đây:

function Human(firstName, lastName) this.firstName = firstName, this.lastName = lastName, this.fullName = function() return this.firstName + " " + this.lastName; Hãy khởi tạo nên 2 object person1 với persion2, áp dụng human constructor nlỗi sau:

var person1 = new Human("Kien", "Nguyen");var person2 = new Human("Khai", "Nguyen");trước hết, lúc hàm Human được khởi sản xuất, javascript đã thêm thuộc tính prototype vào hàm. Nói mang lại dễ nắm bắt là thằng human đang gửi cho constructor 1 loại đòi hỏi, nó nói là constructor ngươi hãy cho tao loại biểu đạt đi, constructor hì hục làm việc và trả lại cho nó một cái diễn tả (instance).


*

Lúc đối tượng người dùng này khởi sản xuất cũng là cơ hội javascript enginesthêm trực thuộc tính proto (cũng khá được Điện thoại tư vấn là dunder proto) vào đối tượng người dùng. Chính dunter proto này đã trỏ cho tới prototype object của hàm constructor.

Javascript engines search kiếm prototype property như vậy nào?

Ta thuộc để mắt tới ví dụ sau đây:

// Tạo một hàm constructor function rỗng function Person()// Thêm trực thuộc tính name, age đến prototype property của hàm Person constructor Person.prototype.name = "Kien" ;Person.prototype.age = 24;Person.prototype.sayName = function()console.log(this.name);// Khởi tạo ra object thực hiện hàm khởi sản xuất của Personvar person1 = new Person();// Truy cập đến trực thuộc tính name sử dụng đối tượng personconsole.log(person1.name) // Output" KienLúc chúng ta nỗ lực truy cập ở trong tính của một đối tượng (làm việc đó là person1.name), vấn đề đầu tiên javascript engines làm cho là đang nỗ lực kiếm tìm trực thuộc tính họ buộc phải bên trên đối tượng người tiêu dùng, nếu ở trong tính ** tồn tại** trên đối tượng người dùng, như thế thì vượt đơn giản và dễ dàng, chúng ta chỉ việc xuất ra hiệu quả.


Nếu không, bây giờ nó đang chất vấn nằm trong tính ở đối tượng người dùng ngulặng chủng loại (prototype object) hoặc đối tượng người dùng mà lại nó thừa kế. Trường thích hợp tệ tuyệt nhất, đến cuối cùng vẫn không tìm kiếm được ở trong tính -> tác dụng trả về sẽ là undefined.

Đối cùng với ví dụ bên trên, khi person1.name được điện thoại tư vấn, javascript engines vẫn khám nghiệm property này có tồn tại trên đối tượng người sử dụng person giỏi không?. Không may ráng, trường thích hợp này trực thuộc tính name ko mãi sau bên trên đối tượng người dùng person, vì thế nó đã liên tục kiếm tìm kiếm trên dunder proto hoặc trên prototype của đối tượng person. Rất may nằm trong tính name mãi mãi bên trên prototype của đối tượng người tiêu dùng person, cho nên nó sẽ mang lại hiệu quả là Kien

Leave a Reply

Your email address will not be published. Required fields are marked *