Nếu bạn đã học Lập trình hướng đối tượng trong JavaScript, bạn sẽ biết rằng bạn có thể tạo một lớp như sau
Person = function[id, name, age]{
this.id = id;
this.name = name;
this.age = age;
alert['A new person has been accepted'];
}
Cho đến nay class person của chúng ta chỉ có hai thuộc tính và chúng ta sẽ cung cấp cho nó một số phương thức. Một cách rõ ràng để làm điều này là sử dụng đối tượng 'nguyên mẫu' của nó. Bắt đầu từ JavaScript 1. 1, đối tượng nguyên mẫu đã được giới thiệu trong JavaScript. Đây là một đối tượng tích hợp giúp đơn giản hóa quá trình thêm các thuộc tính và phương thức tùy chỉnh vào tất cả các phiên bản của một đối tượng. Hãy thêm 2 phương thức vào lớp của chúng ta bằng cách sử dụng đối tượng 'nguyên mẫu' của nó như sau
Person.prototype = {
/** wake person up */
wake_up: function[] {
alert['I am awake'];
},
/** retrieve person's age */
get_age: function[] {
return this.age;
}
}
Bây giờ chúng ta đã định nghĩa lớp Person của chúng ta. Điều gì sẽ xảy ra nếu chúng ta muốn định nghĩa một lớp khác có tên là Trình quản lý kế thừa một số thuộc tính từ Người. Không cần phải xác định lại tất cả các thuộc tính này một lần nữa khi chúng ta xác định lớp Người quản lý của mình, chúng ta chỉ có thể đặt nó thành kế thừa từ lớp Người. JavaScript không tích hợp tính kế thừa nhưng chúng ta có thể sử dụng một kỹ thuật để triển khai tính kế thừa như sau
Inheritance_Manager = {};
//Chúng ta tạo một lớp quản lý thừa kế [tên tùy ý]
Bây giờ, hãy cung cấp cho lớp thừa kế của chúng ta một phương thức có tên là mở rộng, phương thức này nhận các đối số Lớp cơ sở và Lớp con. Trong phương thức mở rộng, chúng ta sẽ tạo một lớp bên trong gọi là hàm kế thừa inherit[] { }. Lý do tại sao chúng tôi đang sử dụng lớp bên trong này là để tránh nhầm lẫn giữa các nguyên mẫu baseClass và subClass. Tiếp theo, chúng tôi tạo nguyên mẫu của lớp kế thừa của chúng tôi trỏ đến nguyên mẫu baseClass như với đoạn mã sau. di sản. nguyên mẫu = baseClass. nguyên mẫu; . phân lớp. nguyên mẫu = thừa kế mới[]; . phân lớp. nguyên mẫu. hàm tạo = lớp con;
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;
Đây là mã đầy đủ cho chức năng mở rộng của chúng tôi
Inheritance_Manager.extend = function[subClass, baseClass] {
function inheritance[] { }
inheritance.prototype = baseClass.prototype;
subClass.prototype = new inheritance[];
subClass.prototype.constructor = subClass;
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;
}
Bây giờ chúng ta đã triển khai kế thừa của mình, chúng ta có thể bắt đầu sử dụng nó để mở rộng các lớp của mình. Trong trường hợp này, chúng ta sẽ mở rộng lớp Person thành lớp Manager như sau
Chúng tôi định nghĩa lớp Manager
Manager = function[id, name, age, salary] {
Person.baseConstructor.call[this, id, name, age];
this.salary = salary;
alert['A manager has been registered.'];
}
chúng tôi làm cho nó kế thừa biểu mẫu Person
Inheritance_Manager.extend[Manager, Person];
Nếu bạn để ý, chúng ta vừa gọi phương thức mở rộng của lớp Inheritance_Manager và chuyển subClass Manager trong trường hợp của chúng ta và sau đó là baseClass Person. Lưu ý rằng thứ tự là rất quan trọng ở đây. Nếu bạn trao đổi chúng, quyền thừa kế sẽ không hoạt động như bạn dự định. Cũng lưu ý rằng bạn sẽ cần chỉ định thừa kế này trước khi bạn thực sự có thể xác định Lớp con của chúng tôi. Bây giờ hãy để chúng tôi xác định lớp con của chúng tôi
Chúng ta có thể thêm nhiều phương thức như phương thức bên dưới. Lớp Manager của chúng ta sẽ luôn có các phương thức và thuộc tính được định nghĩa trong lớp Person vì nó kế thừa từ nó
Manager.prototype.lead = function[]{
alert['I am a good leader'];
}
Bây giờ để kiểm tra nó, chúng ta hãy tạo hai đối tượng, một từ lớp Person và một từ lớp Manager kế thừa
var p = new Person[1, 'Joe Tester', 26];
var pm = new Manager[1, 'Joe Tester', 26, '20.000'];
Vui lòng nhận mã đầy đủ và nhiều nhận xét hơn tại. http. //www. đầu óc mạng. đồng. uk/blog/articles/how-to-implement-javascript-inheritance. aspx
Lớp8 sau đây mở rộng loại tham chiếuCode language: JavaScript [javascript]
class Bird extends Animal { constructor[...args] { super[...args]; } fly[] { console.log['flying']; } }
9. Cú pháp rõ ràng hơn nhiều so vớiCode language: JavaScript [javascript]
class Bird extends Animal { constructor[...args] { super[...args]; } fly[] { console.log['flying']; } }
8 được triển khai bằng cách sử dụngCode language: JavaScript [javascript]
class Bird extends Animal { constructor[...args] { super[...args]; } fly[] { console.log['flying']; } }