Verwenden von Vererbungsmustern in JavaScript

8

Aus meiner Erfahrung macht JavaScript das:

  • Manipulation des DOM oder anderer Host-Objekte
  • Hinzufügen von Ereignishandlern
  • macht Ajax

Seit ich mich mit der prototypischen Vererbung beschäftigt habe, würde ich gerne wissen, wie es in der Praxis angewendet wird. Was sind die Anwendungsfälle?

Benutzt jemand aktiv Vererbungsmuster? Wofür?

(Ich verstehe, dass es viele Antworten auf meine Frage gibt - ich möchte nur einige von ihnen hören, um das Gefühl zu bekommen, Vererbung in JavaScript zu verwenden)

    
Šime Vidas 13.09.2010, 19:12
quelle

5 Antworten

2

Nach meiner Erfahrung mit jQuery (und davor JavaScript) ist die prototypische Vererbung nicht so nützlich, wie ich es erwartet hatte. Es hat Verwendung, aber es ist nicht grundlegend wichtig für die Sprache.

In Javascript, wenn Sie ein Objekt mit einer Methode foo :

zurückgeben wollen %Vor%

Und Anrufer können solche Objekte als polymorph behandeln - das heißt, sie können foo aufrufen, ohne sich darum kümmern zu müssen, um welchen "Typ" es sich handelt. Es besteht keine Notwendigkeit für die Vererbung.

Vor diesem Hintergrund sind Prototypen lediglich eine Optimierung. Sie ermöglichen es Ihnen, eine große Anzahl von Objekten zu erstellen, ohne in jeder Instanz eine große Menge von Funktionseigenschaften replizieren zu müssen. Aus diesem Grund verwendet jQuery es intern. Ein jQuery-Objekt hat Dutzende von Funktionen, und es könnte ein großer Aufwand sein, sie in jede Instanz zu kopieren.

Aber aus der Sicht eines Benutzers von jQuery sind Prototypen nicht besonders wichtig. Es könnte neu geschrieben werden, um sie nicht zu benutzen und es würde immer noch funktionieren (aber könnte viel mehr Speicher verwenden).

    
Daniel Earwicker 14.09.2010, 10:57
quelle
1

Da mehr und mehr Code speziell für mobile Geräte geschrieben wird, auf denen iOS, Android, usw. läuft, und wenn das App-Paradigma reift, gibt es eine Verschiebung hin zu mehr und mehr Komplexität und Logik in JavaScript-Bibliotheken, die auf den Geräten laufen .

Das Objekt / Vererbungsmodell von Javascript gibt dem Entwickler ein sehr flexibles Toolkit für die Entwicklung dynamischer und komplexer Anwendungen.

Das JavaScript-Vererbungsmodell ermöglicht Ihnen:

  • Erweitern Sie einen Prototyp (Objektdefinition) an beliebiger Stelle in Ihrem Code, selbst nach Instanzen von das Objekt wurde erstellt.
  • Erweitere eine Instanz eines Prototyps getrennt von anderen Instanzen.
  • Erweitere alle eingebauten Objekte um neue Funktionen.

Dies ist vergleichbar mit den Klassen- und Mixing-Merkmalen von Ruby und eröffnet eine Menge neuer Design- und Vererbungsmuster, von denen nur wenige erfunden oder dokumentiert wurden.

jquery ist das beste Beispiel für eine ausgereifte Javascript-Bibliothek. Link-Text Prototyp und Scriptaculus sind andere.

    
thomasmalt 14.09.2010 10:44
quelle
1

Douglas Crockford hat einige interessante Artikel über verschiedene Vererbung:

Ссылка

Ссылка

Ссылка

Der erste ist alt, und Sie möchten vielleicht nicht so etwas machen, aber er zeigt, wie flexibel JavaScript sein kann. Der zweite ist, wie er Prototypen benutzt. Der letzte ist nur interessant, wenn Sie Objekte viel in JavaScript verwenden werden, und es hat ein wenig über die Vererbung.

Wenn Sie sie lesen (sie sind kurz), geben Sie vielleicht nicht alle Antworten, die Sie wollen, aber ich vermute, dass Sie darüber nachdenken und JavaScript etwas anders sehen werden. Das heißt, Crockford ist immer sehr zuversichtlich in seinem Schreiben, aber ich denke nicht, dass Sie sein Wort als Gesetz nehmen sollten.

    
Tikhon Jelvis 15.09.2010 07:19
quelle
0

Sie sollten sich den Code für jede der großen Bibliotheken ansehen, wie jQuery - sie wird innerhalb dieser sehr häufig verwendet.

    
Paddy 13.09.2010 19:15
quelle
0

Das wahrscheinlich beste Beispiel für die Vererbung, die ich in JavaScript verwende, ist die Ext-Bibliothek. Anstelle von jQuery, das hauptsächlich ein großes Objekt ist, das selbst erweitert wird, zeigt Ext einen typischen Ansatz für die Vererbung, der in Programmen, die objektorientierte Paradigmen anwenden, gefunden wird.

Ext ist eine Bibliothek, die aus vielen konfigurierbaren Objekten besteht, die auf verschiedene Arten verwendet werden können. Die meisten Objekte sind zu abstrakten Klassen verallgemeinert. Schau es dir an.

Die Einrichtung ist schon lange da, aber Trends in Richtung Ajax und dickere Client-Web-Anwendungen bedeutet, dass es immer häufiger wird, obwohl es normalerweise in den Bibliotheken verpackt ist, die Sie verwenden.

Ich habe schon früher mit prototypischen Vererbung gespielt und habe es während meiner Vollzeitarbeit in einigen Arbeiten sparsam eingesetzt. Es ist nützlich zu wissen und gut, um es zu verstehen, aber es gibt nicht wirklich viele Anwendungsfälle, die ich dafür Tag für Tag hatte.

    
Stuart Wakefield 05.10.2010 19:15
quelle