簡體   English   中英

Javascript:訪問匿名函數中的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM