Wie funktionieren diese Teile des Codes genau?

7

Ich habe früher darüber gelesen, wie man eine JavaScript-Bibliothek erstellt und ich stieß auf diese Code-Teile, die mich dazu bringen, mir die Haare auszureißen.

Hier ist der Code, der mein Gehirn in Knoten brachte:

%Vor%

_ (id) ist nur der Funktionsname, in dem dieser Code enthalten ist. Hier ist der Rest des Codes, wenn Sie selbst darüber schauen müssen.

%Vor%

Ich habe noch nie 'neue Funktion zurückgeben' gesehen, aber ich würde gerne verstehen, wie es funktioniert.

Das andere Stück Code:

%Vor%

Ich weiß, dass dieser Code dem _ Objekt neue Methoden hinzufügt, aber warum geben sie das zurück? Ich habe das ohne versucht und es hat gut funktioniert.

Eine letzte Sache, der Link zum Artikel ist Ссылка

>     
W3Geek 15.06.2012, 04:18
quelle

2 Antworten

16

Das erste Bit des Codes versucht im Wesentlichen zu erkennen, wie die "Konstruktor" -Funktion aufgerufen wurde ...

In JavaScript können Sie eine Funktion verwenden, um ein Objekt auf zwei Arten zu erstellen:

%Vor%

daher die Überprüfung für

%Vor%

ist einfach vorhanden, um sicherzustellen, dass Sie den Konstruktor nicht versehentlich ohne das new -Schlüsselwort aufrufen. Dies wäre schlecht, da jede Eigenschaft, die Sie dem Objekt zuweisen würden, sofort dem window -Namespace zugewiesen würde ... was schlecht wäre.

Wie bei Ihrer zweiten Frage verwendet der Autor ein return this; am Ende jeder Methode als fließendes Interface-Designmuster

Dies ermöglicht eine bequeme und gut aussehende Objektbearbeitung. Ein typisches Beispiel hierfür ist jQuery, wo Sie Methoden auf ein einzelnes Objekt ketten können ...

%Vor%

BEARBEITEN: ein wenig mehr zusätzliche Informationen als Antwort auf die Kommentare von W3Geek:

aus Douglas Crockfords Buch "Javascript: The Good Parts" (total eine gute Lektüre, wenn man JS betritt ... nur 70 Seiten, aber jeder einzelne ist lesenswert).

Der JavaScript-Operator new erstellt ein neues Objekt, das vom Prototyp-Member des Operanden erbt, und ruft dann den Operanden auf und bindet das neue Objekt an this . Dadurch erhält der Operand (der besser eine Konstruktorfunktion sein muss) die Möglichkeit, das neue Objekt anzupassen, bevor es an den Anforderer zurückgegeben wird.

Wenn Sie vergessen, den neuen Operator zu verwenden, erhalten Sie stattdessen einen normalen Funktionsaufruf, der an das globale Objekt und nicht an ein neues Objekt gebunden ist. Das bedeutet, dass Ihre Funktion bei der Initialisierung der neuen Mitglieder die globalen Variablen nicht beachten wird. Das ist eine sehr schlechte Sache.

...

Konstruktoren sind Funktionen, die für die Verwendung mit dem Präfix new vorgesehen sind. Das Präfix new erstellt basierend auf dem Prototyp der Funktion ein neues Objekt und bindet dieses Objekt an die implizierten Funktionen this -Parameter. Wenn Sie das Präfix new nicht verwenden, wird kein neues Objekt erstellt und this wird an das globale Objekt gebunden. Dies ist ein schwerwiegender Fehler.

Leland Richardson 15.06.2012, 04:38
quelle
6

return this gibt Ihnen die Möglichkeit, Methodenaufrufe zu verketten. Sie können einige wirklich coole und nützliche Dinge wie _.show().hide() tun. :)

    
xiaowl 15.06.2012 04:24
quelle

Tags und Links