Nein, Objekte sind mehr als das.
Objekt ist in der Tat eine Karte / ein Wörterbuch, aber jedes Objekt erbt auch einige der Eigenschaften (Schlüssel / Wert-Paare) von einem anderen Objekt. Dieses andere Objekt heißt Prototyp.
Zum Beispiel:
%Vor%Am häufigsten wird ein Prototyp erstellt, indem ein Objekt mit einer Konstruktorfunktion erstellt wird:
%Vor%BEARBEITEN:
So funktioniert der Prototyp unter Verwendung von Konstruktorfunktionen ( ein der Möglichkeiten, OOP in JS auszuführen):
%Vor% Sie sind assoziative Arrays, aber nicht nur assoziative Arrays. Es gibt Funktionen vom Object
-Prototyp (wie .toString()
), deren Namen mit Eigenschaftsnamen kollidieren können. Objekte können über andere Funktionen erstellt werden und haben auch mehr vererbte Eigenschaften.
edit - was ich meine ist das:
%Vor%Ein neu erstelltes leeres Objekt scheint also eine Eigenschaft namens "toString" zu haben. Das Problem mit JavaScript ist, dass es nur einen Eigenschaftszugriffsoperator gibt (gut zwei, aber sie sind zwei Varianten derselben Sache), so dass es keine Möglichkeit gibt, zwischen Zugriffen auf den Inhalt des Arrays und Zugriff auf die API des Arrays zu unterscheiden. (In JavaScript ist es auch keine gute Idee, sie mit dem Wort "array" zu beschreiben, da dies etwas anderes in JavaScript bedeutet - Arrays sind eine Art Objekt mit speziellen Eigenschaften.)
EcmaScript 5 verfügt über Mechanismen, um Objekteigenschaften so zu definieren, dass sie unveränderlich und nicht iterierbar werden, was einige hilft. Es ist immer noch problematisch, wenn Sie eine Eigenschaft namens "toString" in einem Objekt speichern möchten.
Tags und Links javascript