Objektdefinition auf 2 Arten - was ist der Unterschied? [Duplikat]

8

Ich bin neu in Objekten in Javascript. Lesen Sie dieses Thema auf Ссылка und haben sich etwas verwirrt.

>

Ich verstehe den Unterschied zwischen Funktionen und Objekten nicht. Auf der einen Seite soll Funktion sein und Instanz von Function (die ein Kind von Objekt ist) und so eine Funktion soll auch ein Objekt sein.

Andererseits wird das Objekt selbst als Schlüssel / Wert-Paar bezeichnet, wie zum Beispiel:

  1. var User = {name:"Tomy", password:"secret"}

    und das unterscheidet sich ziemlich von einer Funktionsdefinition in Bezug auf die Codekompatibilität ...

    Kann ich Funktionen auf zwei verschiedene Arten erstellen?

  2. var User = function () {this.name="Tomy"; this.password="secret";}

Novellizator 06.08.2013, 11:27
quelle

3 Antworten

7

In diesem Beispiel enthält User jetzt ein Objekt.

%Vor%

In diesem Beispiel enthält User eine Funktion. Diese Funktion kann zum Erstellen von Objekten verwendet werden.

%Vor%

Sie können dann so viele Benutzer erstellen, wie Sie möchten.

%Vor%

Ein realistischeres Beispiel wäre das:

%Vor%

Generelle Konstruktoren (Funktionen, die Objekte erstellen) sind flexibler als Objektliterale und ermöglichen die bequeme und konsistente Erstellung von Objekten (Bugs sind leichter zu erkennen, weniger Doppelcode).

In beiden Methoden gibt es keine browserübergreifenden Inkonsistenzen.

Um zu verstehen, was das new Schlüsselwort ist und was effektiv geschieht zum "Zeitpunkt der Erstellung", siehe Was ist das "neue" Keyword in JavaScript? und Wie funktioniert der neue Operator in JavaScript? >

    
FakeRainBrigand 06.08.2013, 11:34
quelle
2

Der erste erstellt eine Instanz eines Objekts mit zwei Eigenschaften. Sie können auf sie wie folgt zugreifen:

%Vor%

Der zweite erstellt eine Definition eines Objekts, für die Sie separate Instanzen erstellen können, und sie haben separate Instanzen ihrer Eigenschaften. Beispiel:

%Vor%     
Konstantin Dinev 06.08.2013 11:30
quelle
1

Die beiden sind nicht im entferntesten gleichwertig. Die erste Version erstellt ein Objekt mit den Eigenschaften name und password set. Die zweite Version erstellt eine Funktion, die nicht ausgeführt wurde; Es werden keine Eigenschaften festgelegt, bis new User aufgerufen wird.

    
meagar 06.08.2013 11:31
quelle

Tags und Links