Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der JavaScript-Vererbungsmethode (2)

零到壹度
Freigeben: 2018-03-22 14:24:21
Original
975 Leute haben es durchsucht

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;};
}
Nach dem Login kopieren

1, Werkzeugfunktion eins erben

/**
 * @param {Function} subCls 子类
 * @param {Function} superCls 父类
 * @param {Object} param 父类构造参数
 */
function extend(subCls, superCls, param) {
superCls.call(subCls.prototype, param);
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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);
}
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage