2012-02-13 75 views
1

目前我的所有JavaScript函數都在一個函數中,所以我不污染全局命名空間。jQuery Limit Global命名空間

例如

var App = function() { 

    function a() { 
    } 

    return {}; 
}(); 

現在我想使用jQuery所以我想此包裹在下面:

(function (window, document, $) { 
    ... 
}(window, document, jQuery)); 

我曾嘗試包裹VAR應用=函數(){}在jQuery函數,但是這會導致問題,當我有應用程序上的AJAX設置屬性。有任何想法嗎?

回答

1

而不是使用一個單獨的匿名功能,你可以通過windowdocumentjQuery直接進入應用程序:

var App = function(window, document, $) { 
    function a() { 
    } 
}(window, document, jQuery); 

或者,你可以在全局名稱空間中聲明App,但在jQuery閉包中定義它,如下所示:

var App = null; 

(function (window, document, $) { 
    App = function() { 
     function a() { 
     } 
    }; 
}(window, document, jQuery)); 

請注意,在這兩個示例中,我刪除了return {},而在第二個示例中,我使該功能非自我調用。該部分結構看起來像複製粘貼的cruft,是不必要的。

0

如何:

var App = function(window, document, $) { 

     function a() { 
     } 

     return {}; 

}(window, document, jQuery);