2011-01-12 6 views
10

Ok vì vậy tôi đang tự viết một thư viện js cho một dự án và tôi có một câu hỏi. Giống như hầu hết các thư viện khác trên mạng, để duy trì phạm vi biến của tôi, tôi đang gói mã của tôi trong việc này:Tại sao jQuery vượt qua đối tượng cửa sổ vào phạm vi của chúng

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

Bây giờ câu hỏi của tôi là thế này: Tôi nhận thấy jQuery đi trong đối tượng cửa sổ và đặt đối tượng tài liệu riêng của mình như thế này:

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

Có ai biết tại sao họ làm điều này không?

+1

Hmm .. nhìn vào code rút gọn của họ .. tôi đoán là họ làm điều đó bởi vì biến "tài liệu" trở thành "E" và lần lượt làm giảm kích thước tập tin. Thê nay đung không? –

+1

Điều này làm cho cửa sổ nằm ngoài phạm vi toàn cầu. –

Trả lời

14

Có! Vì cửa sổ trong chức năng này là một biến cục bộ nên bây giờ nó cho phép rút gọn tên của nó. Truy cập vào các biến cục bộ sẽ nhanh hơn các biến cục bộ.

1

Bạn có thể truy cập nhanh hơn để vars địa phương, cũng có thể bạn có thể rút ngắn tên biến "cửa sổ" (và thậm chí là "tài liệu") với một cái gì đó như:

(function(w, d)(){ 

    // use w and d var 

})(window, document) 
+0

Mặc dù nó có thể, tôi không khuyên bạn nên quá nhiều rút ngắn của người dân địa phương khi bạn đang phát triển kể từ khi minifier sẽ làm công việc, anyways. Tốt hơn là giữ mã rõ ràng và dễ đọc. –