Aus meiner Erfahrung macht JavaScript das:
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)
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
:
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).
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:
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.
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.
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.
Tags und Links javascript inheritance use-case