Heim >Web-Frontend >js-Tutorial >Parasitäre Vererbung der JS-Vererbung

Parasitäre Vererbung der JS-Vererbung

小云云
小云云Original
2018-03-07 10:50:582163Durchsuche

Man fühlt sich leicht eingeschüchtert, wenn man den Begriff „parasitäre Vererbung“ hört. Keine Sorge, dieser Artikel wird versuchen, diese Vererbungsmethode in JS leicht verständlich zu erklären. Ich hoffe, dass er allen helfen kann.

1. Ein Beispiel

Wir definieren zunächst eine leere Funktion, der formale Parameter ist original, wie folgt:

function createAnother(original){}

Erstellen Sie ein neues Objekt in diesem Funktionsklon : ​​

function createAnother(original){
    var clone=Object.create(original);
}

Fügen Sie das Attribut sayHi zum Klonobjekt hinzu. Das Attribut sayHi ist eine Funktion:

function createAnother(original){
    var clone=Object.create(original);    clone.sayHi=function(){
        alert('hi');
    };
}

Zum Schluss geben Sie das Klonobjekt zurück:

function createAnother(original){
    var clone=Object.create(original);    clone.sayHi=function(){
        alert('hi');
    };    return clone;
}

Angenommen, es gibt ein solches Objekt:

var person={
    name:'Nicholas',
    friends:['Shelby','Court','Van']
};

Übergeben Sie das obige Objekt als tatsächlichen Parameter an unsere auszuführende Funktion:

var anotherPerson=createAnother(person);
anotherPerson.sayHi();

Das Ergebnis der Operation ist: Es erscheint ein „Hallo“-Fenster.

2. Zweifelhafter Punkt: Was ist der Unterschied zwischen dieser Methode und der Prototypenvererbung Object.create(o)?

Wir sehen, dass die Funktion createAnother diesen Satz hat:

var clone=Object.create(original);

Ist das nicht eine prototypische Vererbung?
Tatsächlich wird die prototypische Vererbungsmethode tatsächlich intern verwendet und das endgültig zurückgegebene Objekt ist das Klonobjekt. Es unterscheidet sich jedoch immer noch ein wenig von der prototypischen Vererbung:
Die prototypische Vererbung erbt die Eigenschaften des ursprünglichen Objekts, und das neue Objekt verfügt nicht über neue zusätzliche Eigenschaften. Durch die parasitäre Vererbung können dem neuen Objekt intern Eigenschaften hinzugefügt werden Das Objekt verfügt zusätzlich zu den Eigenschaften über das ursprüngliche Objekt und verfügt außerdem über intern hinzugefügte Eigenschaften.
Im obigen Beispiel gibt es im Vergleich zur prototypischen Vererbung zusätzliche Schlüsselaussagen:

    clone.sayHi=function(){
        alert('hi');
    };

Nachdem eine Instanz erstellt wurde, verfügt die Instanz über dieses Attribut.

Verwandte Empfehlungen:

Teilen mehrerer js-Vererbungsstile

Quellcode-Analyse von js-Vererbung Basisklasse_js-orientiertes Objekt

JS-Vererbungsimplementierungscode_Javascript-Kenntnisse

Das obige ist der detaillierte Inhalt vonParasitäre Vererbung der JS-Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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