anche aggiunta alla risposta @ di Daniel, passando this
alla funzione è un modello comune per avere un riferimento all'oggetto globale, ad esempio:
(function(window){
})(this);
nel browser scripting l'oggetto globale ha una proprietà denominata window
che si riferisce all'oggetto globale stesso, in altri ambienti non esiste la proprietà window
.
Inoltre, un'altra cosa che si può fare è quello di specificare un argomento di nome undefined
, perché la proprietà undefined
non è descritto sul ECMAScript 3 °. Standard Edition (non v'è alcuna garanzia che esiste o non), in alcune implementazioni la proprietà è mutabile, ad esempio:
(function(window, undefined){
})(this);
Nel precedente esempio, abbiamo due identificatori locali (che sono un po 'più veloce per risolvere), window
e undefined
, viene passato solo il primo (this
, che fa sempre riferimento all'oggetto globale in Codice globale (codice che è esterno a qualsiasi funzione)), e il secondo, conterrà il valore primitivo undefined
, perché non stiamo passando alcun valore ad esso.
Questo modello è utilizzato da alcune librerie come jQuery.
Penso che "incapsulare" sia un termine fuorviante e che debba essere modificato in "ambito" per quanto riguarda i concetti OOP –