Unnötig zu erwähnen, dass diese Methode relativ leicht zu verstehen ist und den Konstruktor der übergeordneten Klasse in der Unterklasse bezeichnet. Darüber hinaus besteht einer der größten Vorteile dieser Methode darin, dass die Konstruktion der Vererbung eine Vielzahl der Vererbung erreichen kann. Überprüfen Sie diesen Code:
Die Codekopie lautet wie folgt:
Funktion a ()
{}
Funktion B ()
{}
Funktion c ()
{
this.father = a;
this.father ();
Löschen Sie diesen.
this.father = b;
this.father ();
Löschen Sie diesen.
}
Diese Methode hat dies aber auch und diesen Nachteil:
Wenn Sie mit objektorientiertem vertraut sind, schauen wir uns diesen C# Code an:
Die Codekopie lautet wie folgt:
Klassiker
{
staticvoid main (String [] args)
{
B b = newb ();
bool temp = (typeof (a)). isinstanceOftype (b);
Console.writeLine (temp);
}
}
Classa
{
öffentlich a ()
{
}
}
classb: a
{
öffentlich b ()
{
}
}
Was ist das Ergebnis? B ist natürlich ein Beispiel für a:
Wir führen diesen Test jedoch im obigen Abschnitt des JavaScript -Codes durch, der mit Konstrukten geerbt wurde:
Die Codekopie lautet wie folgt:
Funktion a ()
{}
Funktion B ()
{}
Funktion c ()
{
this.father = a;
this.father ();
Löschen Sie diesen.
this.father = b;
this.father ();
Löschen Sie diesen.
}
var c = neu c ();
Alarm (c Instanz a);
Aber die Ergebnisse sind nicht das, was wir uns vorgestellt haben:
Tatsächlich ist es leicht zu erklären: Konstruierte Erbschaft ist nur eine Eigenschaft der übergeordneten Klasse, die kopiert wird, indem er die Konstruktionsmethode der übergeordneten Klasse aufruft. Es werden keine anderen Suchanfragen durchgeführt, so dass viele Materialien diese Vererbungsmethode nicht nennen.
Denken Sie beim Sehen der Mängel an die Vorteile: Unterstützen Sie mehr Vererbung.
Wenn wir uns die Vererbung von C# ansehen, stellten wir fest, dass es zwei typischste Unterschiede zu diesem Vererbung gibt: C# unterstützt keine Mehrfacherbanz und die Nachteile der oben erwähnten konstruktiven Erbschaft. Daher wurde eine neue Erbschaftsmethode erstellt, und wir wurden zum Prototyp der Vererbung.
Wenn Sie den Namen sehen, können Sie grob verstehen, dass die Prototyp -Vererbung die Eigenschaften von Prototypen verwenden soll, um die Vererbung zu erreichen. Dies ist die beliebteste Art der Vererbung in JavaScript. Wenn Sie den Prototyp nicht verstehen, achten Sie bitte auf einen anderen Artikel: "Mit dem Prototyp spielen - Prototyp".
Schauen wir uns zuerst den Code an. Hier werde ich auf ein Stück Code aus "The Return of the King of JavaScript" zurückgreifen:
Die Codekopie lautet wie folgt:
Funktionspunkt (dimensional)
{
this.dimensional = dimensional;
this.test = function () {
alarm ("Erfolg");
}
}
Funktionspunkt2d (x, y)
{
this.x = x;
this.y = y;
}
Point2d.Prototype = neuer Punkt (2);
var p = neuer Punkt2d (3,4);
P.Test ();
Der Test wurde abgelaufen. Dies zeigt, dass Point2d die übergeordnete Klassenmethode geerbt hat und dann die Instanz betrachtet.
Alarm (p Instanz des Punktes);
Erfolg! OK, analysieren wir den Prototyp -Vererbung:
Ich werde nicht über die Vorteile des Prototypenerbanzs sprechen. Die Struktur ist einfach, leicht zu verstehen und kann instanziert werden. Aber seine Mängel sind auch von Bedeutung. Erinnerst du dich an mein vorheriges Beispiel über Tier, Menschen und Mädchen? Wir verwenden die Vererbung des Prototyps, um Folgendes zu implementieren:
Die Codekopie lautet wie folgt:
Funktion Animal ()
{
this.run = function () {alert ("Ich kann ausführen");};
}
Funktion people (Name)
{
this.say = function () {alert ("Mein Name ist"+this.name);}
}
People.Prototype = new Animal ();
Funktionsmädchen (Name, Alter)
{
this.age = Alter;
this.inTroduce = function () {alert ("Mein Name ist"+this.name+". Ich bin"+this.age);};
}
Girl.Prototype = neue Leute (???);
Bitte achten Sie auf die Codezeile in meinem roten Fettdruck. Menschen sind der Prototyp des Mädchens. Wenn wir also Personen initialisieren, sollten wir den Namen Parameter übergeben, aber der Name jedes Mädchens ist unterschiedlich. Es gibt also keine Verwendung der Prototyperbanz: In der Prototyp -Erbschaftsphase können Sie nicht bestimmen, welche Parameter zur Initialisierung des übergeordneten Klassenobjekts verwendet werden. Anlass 2: Es ist sehr einfach. Jede Klasse kann nur einen Prototyp haben. Das ist eine gute Sache und eine schlechte Sache. Weil:
In objektorientierten Sprachen wie Java und C#wird nicht unterstützt, und es wird angenommen
Mehrere Schnittstellen können nicht implementiert werden!
Okay, das ist alles, worüber ich heute geschrieben habe. Zusammenfassend lässt sich sagen, dass die Prototyperbanz einige Probleme der Konstrukterbranzung löst und einige neue Probleme einführt. Insgesamt ist der Prototyp -Vererbung die am weitesten verbreitete Vererbungsmethode und auch die Möglichkeit, die Vererbung in der JavaScript -Grammatik wirklich zu implementieren!