2011-01-12 12 views
10

Tamam, kendimi bir proje için bir js kitaplığı yazıyorum ve bir sorum var.jQuery neden pencerenin nesnesini kapsamlarına geçirir

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

Şimdi benim sorum şudur: jQuery pencere nesnesi geçer ve bunun gibi kendi belge nesnesi ayarlar fark orada diğer birçok kütüphaneler gibi ben bu kodumu sarma ediyorum benim değişken kapsamını korumak için:

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

Bunu neden yaptığını bilen var mı?

+1

Hmm .. onların küçültülmüş koduna bakarak .. benim sanırım bunu yaparlar çünkü "document" değişkeni "E" olur ve sonuçta dosya boyutunu azaltır. Bu doğru mu? –

+1

Bu, global kapsam dışında pencereyi alır. –

cevap

14

Evet! Bu işlevdeki penceresi penceresinden bu yana, yerel bir değişken artık ismini küçültmeye izin veriyor. Ayrıca yerel değişkenlere erişim, global olanlardan daha hızlı olmalıdır.

1

Ayrıca Değişken adı "pencere" kısaltabilir, yerel değişkenler daha hızlı erişebilir böyle bir şeyle (ve hatta "belge"):

(function(w, d)(){ 

    // use w and d var 

})(window, document) 
+0

Mümkün olsa da, minifier ne zaman işe yaramayacağından, geliştirme aşamasındayken yerlilerin çok fazla kısaltılmasını önermem. Kodu açık ve okunabilir tutmak daha iyidir. –

İlgili konular