2013-02-21 29 views
5

Nếu tôi có một mô-đun với một thành viên nào và tôi sử dụng nó như thế nàynhập tĩnh trong JavaScript

Module.Sub.member() 

Sau đó, những gì tốt nhất là (nếu nó tồn tại) cách để nhập khẩu tĩnh thành viên vào phạm vi địa phương, như using trong cpp hoặc import static trong Java?

Trả lời

13
var App = (function(app) { 

    /* Dependencies */ 
    var Sound = app.Modules.Sound,   
     Input = app.Modules.IO.Input, 
     ... 

    /* Actual code using dependecies */ 
    ...  


})(App || {}); 

giải pháp này có một số ưu điểm:

  • Nói ở phía trên cùng của một module, nó nhìn thấy rõ ràng ở cái nhìn đầu tiên (duy trì đang),

  • lợi ích thông thường của hàng nhập khẩu : ít nhập, tránh xung đột không gian tên, v.v. (mã có thể duy trì)

  • con đường tài sản dài look-up (a.b.c.d) sẽ là cần thiết chỉ một lần (hiệu suất),

  • Sử dụng một biến cục bộ là nhanh hơn, rằng việc sử dụng một biến toàn cầu - nhanh hơn look-up (hiệu suất) ,

  • Công cụ thu nhỏ có thể giảm thiểu tên biến cục bộ một cách an toàn, nhưng không thể giảm thiểu tối đa biến toàn cục.

2

Something như

member = Module.Sub.member; 

lẽ? Tuy nhiên, hãy cẩn thận, vì nó cắt các thuộc tính đối tượng toàn cầu và thậm chí có thể kết thúc việc ghi đè một số trong số đó, vì bạn không có khái niệm về một "đơn vị biên dịch", mà nhập khẩu tĩnh được đặt trong Java. Thay vào đó, bạn có trạng thái thực thi động, duy nhất của máy ảo của bạn, vì vậy đề xuất ở trên không phải là tuyên bố mà là cách bắt buộc để đạt được những gì bạn đang theo dõi.

Theo hiểu biết của tôi, không có cách nào để tuyên bố đạt được mục tiêu giống như import static.

2

Đây là một cách tiếp cận tôi tìm đủ đẹp để chỉ tại địa chỉ:

(function(member) { 
    //Your code here will see member in this scope. 
}) (Module.Sub.member); 

Hope this helps.

+0

Sự khác nhau giữa '(function() {...}())' và '(function() {...})()' là gì? –

+1

@JoshuaMN '(function() {...}())' không phải là javascript hợp lệ. '(function() {...})()' tương đương với: 'var f = function() {...}; f(); ' – sitifensys

Các vấn đề liên quan