2011-01-12 15 views
10

Ok, entonces me estoy escribiendo una biblioteca js para un proyecto y tengo una pregunta. Como la mayoría de otras bibliotecas por ahí, para preservar mi ámbito de las variables estoy envolviendo mi código en este:¿Por qué jQuery pasa el objeto ventana a su ámbito

(function() { 
// my code here 
})(); 

Ahora mi pregunta es la siguiente: Me he dado cuenta de jQuery pasa en el objeto de la ventana y establece su propio objeto documento como este:

(function(window) { 
var document = window.document; 
})(window); 

¿Alguien sabe por qué lo hacen?

+1

Hmm .. mirando su código miniaturizada mi .. Supongo que lo hacen porque la variable "documento" se convierte en "E" y, a su vez, reduce el tamaño del archivo. ¿Es esto correcto? –

+1

Esto quita la ventana del alcance global. –

Respuesta

14

Sí! Como la ventana en esta función es una variable local, ahora permite minimizar su nombre. También el acceso a las variables locales debe ser más rápido que a las globales.

1

Puede tener acceso más rápido a los VARs locales, también se puede acortar la "ventana" nombre de la variable (e incluso "documento") con algo como:

(function(w, d)(){ 

    // use w and d var 

})(window, document) 
+0

Aunque es posible, no recomendaría acortar demasiado a los locales cuando estás en desarrollo, ya que el minificador hará el trabajo, de todos modos. Es mejor mantener el código claro y legible. –

Cuestiones relacionadas