OBJECT

OOP vào Javascript

Javascript là một trong ngữ điệu dựa trên nguyên ổn chủng loại (prototype-based language), nó có nghĩa rằng nằm trong tính với thủ tục của object rất có thể được chia sẻ trải qua các đối tượng người sử dụng bao quát (generalized objects) có khả năng mở rộng.

Bạn đang xem: Object

Trong số các ngôn ngữ phía đối tượng thông dụng nlỗi Java, Pynhỏ bé, PHP, Javascript tương đối là quan trọng đặc biệt, nó không có class, vậy những tính chất của oop trên javascript được biểu thị như thế nào?.

*

Trong nội dung bài viết này, ta đang mày mò phương pháp thao tác làm việc của prototype (được hiểu như thể thừa kế (inheritance) ở javascript).

Prototype là gì?

Prototype là qui định mà những object vào javascript kế thừa những tuấn kiệt xuất phát từ 1 object không giống.

*

Mỗi một object vào javascript đều có một nằm trong tính nội bộ (internal property) Call là <>.

Chúng ta rất có thể chứng tỏ điều này bằng phương pháp tạo ra một object mới.

let a = ;

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

Xem thêm: Pokémon: Genesect Thần Tốc Và Mewtwo Là Gì, 16 Điều Bí Ẩn Về Mewtwo

let x = new Object().

Dấu ngoặc knghiền tạo nên rằng ở trong tính này sẽ không thể truy cập thẳng làm việc code của họ. Để thực hiện Việc truy vấn, ta thực hiện thủ tục getPrototypeOf()

Object.getPrototypeOf(x);

Output đầu ra ở đây là:

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

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

Chúng ta sẽ cùng khám phá sâu hơn 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 thành 2 object person1 cùng persion2, thực hiện human constructor nhỏng sau:

var person1 = new Human("Kien", "Nguyen");var person2 = new Human("Khai", "Nguyen");Trước tiên, khi hàm Human được khởi chế tác, javascript đã thêm trực thuộc tính prototype vào hàm. Nói mang đến dễ hiểu là thằng human vẫn gửi đến constructor 1 loại yêu cầu, nó nói là constructor mày hãy đến tao cái diễn tả đi, constructor hì hục thao tác làm việc với trả lại mang lại nó một cái biểu thị (instance).

*

Khi ta khởi tạo thành thêm object human1 bởi hàm constructor:

*

Lúc đối tượng người tiêu dùng này khởi tạo nên cũng là dịp javascript enginesthêm ở trong tính proto (cũng được điện thoại tư vấn là dunder proto) vào đối tượng. Chính dunter proto này vẫn trỏ cho tới prototype object của hàm constructor.

Javascript engines tìm tìm prototype property như vậy nào?

Ta thuộc lưu ý ví dụ sau đây:

// Tạo một hàm constructor function rỗng function Person()// Thêm 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 sản xuất object sử dụng hàm khởi tạo nên của Personvar person1 = new Person();// Truy cập tới thuộc tính name áp dụng đối tượng người dùng personconsole.log(person1.name) // Output" Kienkhi bọn họ nỗ lực truy cập thuộc tính của một đối tượng người sử dụng (sinh sống đây là person1.name), câu hỏi đầu tiên javascript engines làm cho là sẽ cố gắng tìm kiếm ở trong tính họ yêu cầu trên đối tượng người sử dụng, giả dụ thuộc tính ** tồn tại** trên đối tượng, như thế thì quá dễ dàng, chúng ta chỉ bài toán xuất ra hiệu quả.

*

Nếu ko, hôm nay nó vẫn chất vấn nằm trong tính sinh hoạt đối tượng người tiêu dùng nguim mẫu (prototype object) hoặc đối tượng người dùng cơ mà nó thừa kế. Trường đúng theo tệ tốt nhất, đến sau cùng vẫn không tìm được thuộc tính -> công dụng trả về đang là undefined.

Đối với ví dụ bên trên, Lúc person1.name được gọi, javascript engines đã kiểm tra property này còn có vĩnh cửu trên đối tượng person giỏi không?. Không may chũm, ngôi trường hòa hợp này ở trong tính name ko trường tồn bên trên đối tượng người tiêu dùng person, cho nên nó sẽ liên tiếp tra cứu kiếm bên trên dunder proto lớn hoặc bên trên prototype của đối tượng người tiêu dùng person. Rất may ở trong tính name mãi sau trên prototype của đối tượng người sử dụng person, vì thế nó vẫn đến hiệu quả là Kien

*

Qua nhì ví dụ bé dại này, ao ước các bạn có một chút hình sử dụng về cách thức hoạt động vui chơi của prototype vào javascript.

Vì đấy là nội dung bài viết đầu tiên của chính mình yêu cầu ví như tất cả thiếu sót gì, mong muốn được các bạn góp ý bằng phương pháp phản hồi sinh hoạt cuối bài viết.