auch zusätzlich zu der Antwort des @ Daniel, this
an die Funktion übergeben ist ein gemeinsames Muster, das eine Referenz auf das globale Objekt zu haben, zum Beispiel:
(function(window){
})(this);
In Browser, um das globale Objekts Scripting hat eine Eigenschaft namens window
bezieht sich auf das globale Objekt selbst, in anderen Umgebungen gibt es keine window
Eigenschaft.
Auch eine andere Sache, die getan werden kann, ist ein Argument angeben namens undefined
, weil die undefined
Eigenschaft nicht auf dem 3. ECMAScript beschrieben. Ausgabe Standard (es gibt keine Garantie, dass oder nicht vorhanden ist), und in einigen Implementierungen die Eigenschaft ist wandelbar, zum Beispiel:
(function(window, undefined){
})(this);
Im obigen Beispiel haben wir zwei lokale Kennungen (was ein wenig schneller zu lösen), window
und undefined
, nur die erste wird übergeben (this
, die bezieht sich immer auf das globale Objekt in Globaler Code (Code, der außerhalb jeder Funktion ist)), und der zweite, wird das primitive undefined
Wert enthalten weil wir ihm keinen Wert geben. Dieses Muster wird von einigen Bibliotheken wie jQuery verwendet.
Ich denke, 'verkapseln' ist hier ein irreführender Begriff und sollte in Bezug auf OOP-Konzepte in 'Geltungsbereich' geändert werden –