In diesem Kapitel wird die beste Möglichkeit vorgestellt, die JavaScript-Vererbung mithilfe der praktischen Aufrufmethode in Kombination mit der Prototypkettenmethode zu implementieren. Sie ist sehr praktisch und Freunde in Not können sich darauf beziehen.
Der einfachste Weg, die JavaScript-Vererbung zu implementieren, ist die Call-Methode (oder Apply-Methode) und die Prototyp-Chain-Methode. Beide Methoden weisen jedoch Mängel auf und ihre Mischung ist eine gute Möglichkeit, die Vererbung zu implementieren. Das Folgende ist ein Beispiel:
function Animal(age){ this.age = age; } Animal.prototype.sayAge = function(){ window.alert("My age is "+this.age+"!"); }; function Dog(age,name){ Animal.call(this,age); this.name = name; } Dog.prototype = new Animal(); Dog.prototype.sayName = function(){ window.alert("I am a "+this.name+"!"); }; var dog = new Dog(15,"dog"); dog.sayName(); dog.sayAge();
Für die Klasse Animal gibt es ein Feldattribut „Alter“ und ein Funktionsattribut „sayAge“. Die Methode „sayAge“ ist prototypisch definiert. Die Dog-Klasse muss Animal erben und ihre Feldattribute enthalten neben dem Alter auch den Namen. Über Animal.call(this,age); kann Dog das Feldattribut age von Animal erben und initialisieren. Der erste Parameter der Aufrufmethode ist der This-Zeiger der geerbten Klasse und der zweite Parameter ist der Parameter des Konstruktors der Animal-Klasse. Tatsächlich kann die Vererbung nur durch die Aufrufmethode erreicht werden. Die einzige Voraussetzung besteht jedoch darin, dass die Funktionsattribute der übergeordneten Klasse im Konstruktor definiert werden müssen, was für die Definition der Funktionsattribute hier mit der Prototypmethode nicht geeignet ist ( Die Verwendung der Prototypenmethode zum Definieren von Funktionseigenschaften ist intuitiver als das Definieren innerhalb eines Konstruktors. Um die im Prototypmodus von Animal definierten Funktionsattribute zu erben, lautet die erforderliche Anweisung „Dog.prototype = new Animal();“. Die Funktion sayName() in der Klasse Dog ist ein eigenes Funktionsattribut.
Zusätzlich zu dieser klassischsten Art der Vererbungsimplementierung stehen derzeit einige kostenlose Bibliotheken zur Verfügung. Aber über alle Arten von Bibliotheken nachzudenken, ist überwältigend. Lasst uns sie studieren, wenn wir Zeit und Bedarf haben!