Obwohl JavaScript keine ererbten Keywords liefert, können wir trotzdem einige gute Möglichkeiten finden, sie zu implementieren.
1. Prototyp -Kettenvererbung:
Die Codekopie lautet wie folgt:
var base = function ()
{
this.level = 1;
this.name = "base";
this.toString = function () {
zurück "Basis";
};
};
Base.Constant = "konstant";
var sub = function ()
{
};
Sub.Prototype = new Base ();
Sub.Prototype.name = "sub";
Vorteile: Nach dem Schlüsselwort des Instanzes ist eine Instanz sowohl eine Instanz der übergeordneten Klasse als auch eine Instanz der Kinderklasse, die das reinste Erbe zu sein scheint.
Nachteile: Unterklassen unterscheiden sich von den Eigenschaften und Methoden der übergeordneten Klasse. Sie müssen separat nach Anweisungen wie sub.Prototype = new Base () ausgeführt werden. und kann nicht in den Subkonstruktor eingewickelt werden. Zum Beispiel: sub.Prototype.name = "sub"; Multiple Vererbung kann nicht erreicht werden.
2. Konstrukterbschaft:
Die Codekopie lautet wie folgt:
var base = function ()
{
this.level = 1;
this.name = "base";
this.toString = function () {
zurück "Basis";
};
};
Base.Constant = "konstant";
var sub = function ()
{
Base.call (this);
this.name = "sub";
};
Vorteile: Multiple Vererbung kann implementiert werden, und Attribute, die für Unterklassen einzigartig sind, können im Konstruktor eingestellt werden.
Nachteile: Die Verwendung von Instanzen von wurde festgestellt, dass das Objekt keine Instanz der übergeordneten Klasse ist.
3. Instanzerbranz:
Die Codekopie lautet wie folgt:
var base = function ()
{
this.level = 1;
this.name = "base";
this.toString = function () {
zurück "Basis";
};
};
Base.Constant = "konstant";
var sub = function ()
{
var instance = new base ();
instance.name = "sub";
Rückkehrinstanz;
};
Vorteile: Es ist ein Objekt der übergeordneten Klasse, und der gleiche Effekt kann erhalten werden, indem neue Objekte konstruiert und ohne neue Objekte verwendet werden.
Nachteile: Das generierte Objekt ist im Wesentlichen eine Instanz der übergeordneten Klasse, kein Subklassenobjekt. Multiple Vererbung wird nicht unterstützt.
4. Kopie erbliche Kopie:
Die Codekopie lautet wie folgt:
var base = function ()
{
this.level = 1;
this.name = "base";
this.toString = function () {
zurück "Basis";
};
};
Base.Constant = "konstant";
var sub = function ()
{
var base = new base ();
für (var i in der Basis)
Sub.Prototype [i] = Base [i];
Sub.Prototype ["name"] = "sub";
};
Vorteile: Unterstützt die Mehrfacherbschaft.
Nachteile: geringe Effizienz; Methoden können nicht erhalten werden, die von der übergeordneten Klasse nicht aufgezählt werden können.
Diese Formen haben ihre eigenen Merkmale, und nur in Bezug auf den Code, den ich anbietet, erfüllen sie die folgende Tabelle:
2012-1-10: Wenn wir keine Klassenvererbung benötigen, brauchen wir nur eine Objektvererbung. Für Browser, die ECMascript 5 unterstützen, können wir auch die Objekt verwenden.
Die Codekopie lautet wie folgt:
var base = function ()
{
this.level = 1;
this.name = "base";
this.toString = function () {
zurück "Basis";
};
};
Base.Constant = "konstant";
var sub = Object.create (new Base ());
sub.name = "sub";