Tạo một Prototype Chain trong Javascript

Tạo một Prototype Chain trong Javascript

Để minh hoạ prototypal inheritance làm việc như thế nào trong Javascript, xem xét code sau cái tạo
các object classes cho Person, Employee, và Staff. Trong ví dụ này, các methods bên trong mỗi class xây
dựng dựa trên các methods từ các classes khác. Phương thức name() của class Person trả về text string
firstName.lastNamephương thức email() của class Employee xây dựng dựa trên method đó để trả về text
string firstName.lastName@example.com. Cuối cùng, phương thức id() của class Staff sử dụng phương thức
email() để trả về text string firstName.lastName@example.com [title].

function Person(fName, lName) {
this.firstName = fName;
this.lastName = lName;
this.name = function() {
return this.firstName + “.” + this.lastName;
}
}
function Employee(fName, lName) {
this.firstName = fName;
this.lastName = lName;
this.email = function() {
return this.name() + “@example.com”;
}
}
function Staff(fName, lName) {
this.firstName = fName;
this.lastName = lName;
this.title = null;
this.id = function() {
return this.email() + ” [” + this.title + “]”;

Để móc xích các object classes này cùng với nhau, định nghĩa prototype của mỗi class như một instance của
một class trật tự cao hơn. Vì mọi staff member là một employee và mọi employee là một person, prototype chain
từ staff member tới employee tới person sẽ được định nghĩa như sau:

Staff.prototype = new Employee();
Employee.prototype = new Person();

Một khi móc xích đã được thiết lập, một instance của object class Staff sẽ kế thừa tất cả các đặc tính và phương
thức định nghĩa xuyên suốt prototype chain. Trong code sau, phương thức id() được áp dụng cho new hire thể hiện
một text string cái dựa trên các methods thừa kế từ các classes Employee và Person:

let hire = new Staff(“Keisha”, “Adams”);
hire.title = “Programmer”;
console.log(hire.id());
// logs Keisha.Adams@example.com [Programmer]

Trật tự là quan trọng khi định nghĩa một prototype chain. Bắt đầu tại subclass thấp nhấtdi chuyển lên trong móc
xích tới superclass. Khi trình dịch Javascript gặp một tham chiếu tới một đặc tính hay phương thức, nó cố gắng phân giải nó
trong trật tự sau:
1. Kiểm tra đặc tính hoặc phương thức trong object instance hiện tại.
2. Kiểm tra đặc tính hoặc phương thức với object s prototype.
3. Nếu prototype là một instance của object khác, hãy kiểm tra đặc tính hoặc phương thức trong object đó.
4. Tiếp tục di chuyển qua prototype chain cho đến khi định vị được đặc tính hoặc phương thức hoặc phần cuối của móc xích
được đi đến.
Tất cả các prototype chains cuối cùng đều tìm thấy nguồn của chúng trong object cơ sở.

Chia sẻ