JS __proto__ Vererbungsersatz

8

Ich verwende die Prototyp-Vererbung wie in Ссылка

beschrieben %Vor%

Jetzt kann ich String-Funktionen und MyString-Funktionen auf MyString-Instanzen verwenden.

Aber da __proto__ veraltet ist, nicht Standard ist und vermieden werden sollte, was wäre der beste Weg, um Objekte zu vererben?

Ich fand Ссылка und es sieht immer noch etwas komplex und etwas übertrieben aus, verglichen mit einer Einzellinie Code:)

Edit: Danke für deine Antworten!

    
azerty 01.03.2011, 16:38
quelle

3 Antworten

6

Die ECMAScript 5-Spezifikation enthält eine neue Funktion Object.create() , mit der Sie ein generisches Objekt mit einem bestimmten Prototyp erstellen können. Um das gewünschte Verhalten zu erhalten, tun Sie Folgendes:

%Vor%

Object.create kann verwendet werden, um eine beliebig lange Prototyp-Kette zu erstellen, einfach durch Ketten-Rückgabewerte entlang. Leider gibt es uns nicht die Möglichkeit, die Prototypkette eines existierenden Objekts zu verändern (damit löst es nicht das Array- "Vererbungs" -Problem)

    
olliej 01.03.2011 17:25
quelle
4

Wahrscheinlich:

%Vor%

Danach können Sie den Prototyp mit Ihren Methoden erweitern:)

    
James 01.03.2011 16:41
quelle
1

Wenn Sie sagen:

%Vor%

Sie sagen, dass die Laufzeit auf String.prototype für Eigenschaften von MyString.prototype schauen sollte, die nicht direkt in MyString.prototype deklariert sind. Aber das ist eine umständliche Art zu sagen, was Sie versuchen zu sagen, dass Instanzen von MyString sollten die gleichen Eigenschaften und Methoden wie ein String haben.

Sie sagen das so:

%Vor%

__proto__ ist eine Eigenschaft von object Instanzen . Es ist die Laufzeitverbindung zurück zu dem Objekt, das als der Prototyp dieser Instanz dient. Auf der anderen Seite ist prototype eine Eigenschaft von Konstruktorfunktionen. Es ist die Vorlage für alle Objekte, die mit diesem Konstruktor erstellt wurden.

    
Wayne Burkett 01.03.2011 16:53
quelle