[英]Javascript: Accessing functions within Anonymous function
按照Wordpress的建議使用jQuery ,我將代碼包裝在一個匿名函數中,以便jQuery不會與其他javascript庫沖突:
(function($) {
// Inside of this function, $() will work as an alias for jQuery()
// and other libraries also using $ will not be accessible under this shortcut
})(jQuery);
問題是我想將我的代碼分成兩個文件:1)main.js和2)utility.js。
將主程序(main.js)封裝在一起后,如何在另一個文件(utility.js)中調用函數?
Utility.js
(function($) {
function doSomething() {
/* code here */
}
})(jQuery);
main.js
(function($) {
$(document).ready(function(){
doSomething();
}
})(jQuery);
謝謝
您可以用來從Utility.js返回一個對象:
(function($, win) { win.util = function(){ this.doSomething = function() { $('pre').append('util.js'); } }; })(jQuery, window); (function($, $U) { // <----referred it with $U $(document).ready(function() { $U.doSomething(); }); })(jQuery, new util()); //<----pass the util object here.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <pre></pre>
實際上,我喜歡以OOJS方式使用它的方式。 嘗試創建一個構造函數並傳遞一個新對象。
最簡單的解決方案是將utility.js
所有功能分配給某個全局對象。 假設您的代碼在瀏覽器中可以運行,您可以執行以下操作:
Utility.js
(function($, context) {
context.Utility = {
doSomething: function() {
/* code here */
}
};
})(jQuery, window);
main.js
(function($, Utility) {
$(document).ready(function(){
Utility.doSomething();
}
})(jQuery, Utility);
一個更通用的解決方案是使用異步模塊加載( http://requirejs.org/ )或類似JSPM的工具來管理應用程序中的模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.