Dieser Artikel beginnt mit dem Schreiben einiger Toolfunktionen zum Implementieren von Klassenerweiterungen. Jede Dienstprogrammfunktion ist auf eine bestimmte Art (Gewohnheiten) beim Schreiben von Klassen ausgerichtet. In diesem Artikel werden Klassen gemäß der Konstruktormethode geschrieben: Attribute (Felder) und Methoden hängen alle daran. Die folgenden Klassen werden jeweils als übergeordnete Klassen und Unterklassen bereitgestellt.
/
/ 父类Person function Person(nationality) { this.nationality = nationality; this.setNationality = function(n) {this.nationality=n;}; this.getNationality = function() {return this.nationality;}; } // 子类Man function Man(name) { this.name = name; this.setName = function(n){this.name=n;}; this.getName = function(){return this.name;}; }
1, Werkzeugfunktion eins erben
/** * @param {Function} subCls 子类 * @param {Function} superCls 父类 * @param {Object} param 父类构造参数 */ function extend(subCls, superCls, param) { superCls.call(subCls.prototype, param); }
und wie folgt verwenden
extend(Man, Person, 'China'); var m = new Man('jack'); console.log(m.nationality);//China console.log(m.setNationality('Japan')); console.log(m.getNationality('Japan'));//Japan
Die Ausgabe zeigt, dass Man die Attribute und alle Methoden von Person erbt. Diese Vererbungsmethode unterscheidet sich stark von Java.
class Animal { int legs; Animal(int l) { legs = l; } int getLegs() { return legs; } } public class Person extends Animal{ //属性(字段) String name; //构造方法(函数) Person(int legs, String name) { super(legs);//调用父类构造器 this.name = name; } //方法 String getName() { return this.name; } public static void main(String[] args) { Person p = new Person(2,"jack"); System.out.println(p.legs); } }
In Java ruft die Unterklasse Person die Konstruktionsmethode der übergeordneten Klasse super(legs) auf und fügt die übergeordnete Klasse beim Erstellen eines Objekts direkt hinzu . Der Konstruktionsparameter legs:2 wird übergeben, nicht nur Ihr eigener name:jack. Die obige JavaScript-Vererbung besteht darin, die Konstruktionsparameter der übergeordneten Klasse (den dritten Parameter der Erweiterungsfunktion) beim Erweitern und nicht beim Neuen zu übergeben Übergeben Sie bei der Besetzung die Konstruktionsparameter der übergeordneten Klasse. Okay, simulieren Sie Java, um die Erweiterung zu implementieren. Hier wird die Referenz der übergeordneten Klasse geschickt vorübergehend in der Unterklasse gespeichert.
2, erben Sie die Werkzeugfunktion zwei
/** * @param {Function} subCls * @param {Function} superCls */ function extend(subCls, superCls) { subCls.supr = superCls; }
oder verwenden Sie Person als übergeordnete Klasse, um die Unterklasse Woman zu implementieren
function Woman(nationality, name) { Woman.supr.call(this, nationality);//和java有点类似哦,在子类中调用父类构造器 this.name = name; this.setName = function(n){this.name=n;}; this.getName = function(){return this.name;}; } extend(Woman, Person);
Schließlich ähnelt die Methode zum Erstellen eines Objekts der von Java, d. h. im neuen Zustand wird gleichzeitig der Konstruktionsparameter der übergeordneten Klasse (Nationalität: Japan) übergeben.
var w = new Woman('Japan', 'lily'); console.log(w.nationality);//Japan w.setNationality('U.S.A'); console.log(w.getNationality());//U.S.A
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der JavaScript-Vererbungsmethode (2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!