Was bedeutet es, dass Javascript eine prototypbasierte Sprache ist?
Einer der wichtigsten Vorteile, die mit Javascript sagt, dass es ist eine Prototyp-basierte Sprache.
Aber was bedeutet es, dass Javascript ist Prototyp-basierend, und warum ist das ein Vorteil?
InformationsquelleAutor der Frage Jonas Pegerfalk | 2008-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Prototypal inheritance ist eine form der Objekt-orientierten Wiederverwendung von code. Javascript ist die einzige der [mainstream] Objekt-orientierten Sprachen zu verwenden prototypal inheritance. Fast alle anderen Objekt-orientierten Sprachen sind der klassischen.
In klassische Vererbungder Programmierer schreibt eine Klasse definiert, die ein Objekt. Mehrere Objekte instanziiert werden können aus der gleichen Klasse, so haben Sie code in einem Ort, der beschreibt mehrere Objekte in Ihrem Programm. Klassen können dann in einer Hierarchie organisiert, die Förderung der Wiederverwendung von code. Mehr general-code gespeichert ist, in eine Klasse höherer Ebene, von der unteren Ebene Klassen Erben. Dies bedeutet, dass ein Objekt freigeben von code für andere Objekte der gleichen Klasse, sowie mit den übergeordneten Klassen.
In der prototypal inheritance form, Objekte Erben direkt von anderen Objekten. Alle von den Unternehmen über die Klassen geht Weg. Wenn Sie möchten, dass ein Objekt, das Sie gerade schreiben, ein Objekt. Aber die Wiederverwendung von code ist immer noch eine wertvolle Sache, also den Objekten erlaubt sind, um miteinander verbunden werden zu einer Hierarchie. In javascript wird jedes Objekt hat einen geheimen link zu dem Objekt, das Sie geschaffen haben, bilden eine Kette. Wenn ein Objekt aufgefordert wird, eine Eigenschaft, die es nicht haben, ist sein parent-Objekt gefragt werden... immer auf die Kette, bis die Immobilie gefunden wird oder bis das wurzelobjekt erreicht ist.
Jede Funktion in JavaScript (die Objekte selbst) tatsächlich hat ein Mitglied namens "prototype", die verantwortlich ist für die Bereitstellung Werte wenn Sie ein Objekt nach Ihnen gefragt. Mit dieser member ermöglicht den Konstruktor Mechanismus (durch welche Objekte sind aufgebaut aus Funktionen) zu arbeiten. Hinzufügen einer Eigenschaft der Prototyp einer Funktion ein Objekt zur Verfügung zu stellen, das konstruierte Objekt, sowie auf alle Objekte, die von Ihr Erben.
Vorteile
Kann es nicht eine harte und schnelle Regel, warum prototypal inheritance ist eine vorteilhafte form von code-Wiederverwendung. Die Wiederverwendung von Code an sich ist vorteilhaft und prototypal inheritance ist eine vernünftige Art und Weise zu gehen darüber. Man könnte argumentieren, dass prototypal inheritance ist ein ziemlich einfaches Modell der Wiederverwendung von code, und dieser code kann schwer wieder in direkte Wege. Aber die klassischen Sprachen sind sicherlich in der Lage, dies zu erreichen als auch.
Sidenote: @Andrew Hedges ist ein guter Punkt, dass es tatsächlich viele prototypal Sprachen. Es ist erwähnenswert, dass diese "anderen" existieren, aber auch erwähnenswert, dass keiner von Ihnen hat irgendetwas in der Nähe zum mainstream. NewtonScript zu haben schien, einige Traktion für eine Weile, aber starb mit seiner Plattform. Es ist auch möglich zu verlängern, einige moderne Sprachen in einer Weise, die Beurteilung prototypal Fähigkeiten.
InformationsquelleAutor der Antwort
Prototyp-basierte Sprache, macht nicht die Unterscheidung von Klassen vs. Objekte: es hat einfach Objekte. Eine Prototyp-basierte Sprache ist die Vorstellung von einem prototypischen Objekt, ein Objekt, das als Vorlage benutzt, von dem die ursprünglichen Eigenschaften, die für ein neues Objekt. Jedes Objekt kann seine eigenen Eigenschaften, die entweder bei der Erstellung oder zur Laufzeit. Darüber hinaus jedem Objekt zugeordnet werden kann als der Prototyp für ein anderes Objektso dass das zweite Objekt zu teilen, das erste Objekt Eigenschaften.
InformationsquelleAutor der Antwort Guido García
Prototyp-basierte Programmierung ist eine Art der objektorientierten Programmierung, wo die Klassen sind nicht vorhanden, und das Verhalten der Wiederverwendung (oder Vererbung in klassenbasierten Sprachen) erfolgt durch das Klonen bestehender Objekte, die als Prototypen.
InformationsquelleAutor der Antwort CMS
Den Vorteil/Nachteil ist, dass, wir können neue Arten von Objekten zur Laufzeit ohne die Notwendigkeit für die Definition von Klassen (static code). Wie die meisten Funktionen, es ist bis zu den Entwickler, um es wiederum zu einem Vorteil/Nachteil.
Oben ist möglich, weil die Objekte sind im wesentlichen Funktionen in java script (Verschlüsse).
InformationsquelleAutor der Antwort questzen
Statt deklarieren eine Klasse Struktur, die Sie erstellen können Objekte der gleichen Art, und fügen Sie Ihre definition kannst du jederzeit mithilfe des Objekt-Prototyp.
Es ist flexibler als der normale Weg der Dinge zu tun.
InformationsquelleAutor der Antwort Greg
Wenn Sie nur Objekte zur Laufzeit statt eine Klasse zu kompilieren, um neue Objekte, dies eröffnet die Möglichkeit der Verlängerung ein Objekt, ohne zu wissen, alle details zu erfahren. Natürlich, es kann ein Nachteil ziemlich schnell, je nach Nutzung. Ich machen Sie keine Annahmen über die Sprache, die hier, so ist es anwendbar auf andere Sprachen als javascript-die sind nicht so dynamisch.
Erhalten Sie möglicherweise das Objekt von gerade ungefähr überall, Ihren eigenen code, aus dem Netzwerk, von der Datenbank, aus externen Verknüpfungen und so weiter.
Beachten Sie, dass eine Sprache nicht implementieren müssen, um die prototype-Vererbung wie javascript. In javascript ist eine Prototyp-Objekt ist lediglich gemeinsam, so auch die Eigenschaften, unter den Erben. Die alternative ist das kopieren über alle Eigenschaften, die der Prototyp für das neue Objekt. Jeder Ansatz hat seine stärken in verschiedenen Situationen. Ich mag das zweite mehr, aber es ist nicht das, was javascript macht.
InformationsquelleAutor der Antwort artificialidiot
Nach der Lektüre alle Antworten, das ist das Fazit
1) Vererbung, in denen Objekte vererbt werden direkt von anderen Objekten
2), die nicht die Verwendung von Klassen
3) Auch als Instanz-basierte Programmierung oder classless Prototyp-orientierte Programmierung
4) Verhaltensweisen, die Wiederverwendung erfolgt durch das Klonen bestehender Objekte, die als Prototypen
5) - Objekt dient als Vorlage, aus dem das neue Objekt erhalten ursprünglichen Eigenschaften
InformationsquelleAutor der Antwort Sunil Garg
JavaScript ist eine Prototyp-basierte Programmiersprache (wahrscheinlich Prototyp-basierte scripting-Sprache ist mehr korrekte definition). Es beschäftigt Klonen und nicht die Vererbung. Eine Prototyp-basierte Programmiersprache ist ein Stil, der Objekt-orientierten Programmierung verwendet Funktionen als Konstruktoren für Klassen. Obwohl Javascript ein Schlüsselwort class, hat es keine class-Anweisung. Diese Unterscheidung ist wichtig, beim Vergleich von JavaScript zu anderen OOP-Sprachen.
InformationsquelleAutor der Antwort student