Ist das JavaScript-Objekt nichts als ein assoziatives Array?

8

Ok, ich gehe gerade durch die Grundlagen von JavaScript und ich lernte objects , wo ich auf dieses Beispiel stieß ...

JavaScript

%Vor%

Und was wir in PHP schreiben ist

%Vor%

Ist das also dasselbe oder machen Sie einen Fehler beim Verständnis des Konzepts?

    
Mr. Alien 25.12.2012, 14:12
quelle

2 Antworten

11

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%     
Stefan 25.12.2012, 14:32
quelle
1

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.

    
Pointy 25.12.2012 14:16
quelle

Tags und Links