Làm cách nào để viết kế thừa trong JavaScript?

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ớp

class Bird extends Animal { constructor[...args] { super[...args]; } fly[] { console.log['flying']; } }

Code language: JavaScript [javascript]
8 sau đây mở rộng loại tham chiếu

class Bird extends Animal { constructor[...args] { super[...args]; } fly[] { console.log['flying']; } }

Code language: JavaScript [javascript]
9. Cú pháp rõ ràng hơn nhiều so với

class Bird extends Animal { constructor[...args] { super[...args]; } fly[] { console.log['flying']; } }

Code language: JavaScript [javascript]
8 được triển khai bằng cách sử dụng

Kế thừa được thực hiện như thế nào trong JavaScript?

Kế thừa JavaScript được thực hiện thông qua nguyên mẫu . Bạn không định nghĩa bất kỳ thứ gì bằng từ khóa lớp, nhưng bạn tạo một hàm được sử dụng làm hàm tạo để xây dựng các đối tượng mới [với từ khóa mới].

Khi nào sử dụng tính kế thừa trong JS?

Kế thừa hữu ích cho khả năng sử dụng lại mã. sử dụng lại các thuộc tính và phương thức của một lớp hiện có khi bạn tạo một lớp mới .

Làm cách nào để kế thừa từ lớp cha trong JavaScript?

Các lớp được kế thừa bằng cách sử dụng từ khóa mở rộng . Lớp đang được kế thừa được gọi là lớp cha và lớp đang kế thừa lớp cha được gọi là lớp con. Từ khóa super trong javascript dùng để gọi các phương thức của lớp cha.

Mô hình kế thừa nào được sử dụng trong JavaScript?

JavaScript sử dụng mô hình kế thừa nguyên mẫu , mô hình này hoàn toàn khác với mô hình dựa trên lớp mà nhiều ngôn ngữ khác sử dụng.

Chủ Đề