使用名称而不是匿名函数

时间:2013-03-27 17:32:09

标签: javascript

这就是我包装所有JavaScript的方式:

;(function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {}
})(jQuery, window);

但是现在我需要从那个闭包之外调用myFunction。

window.addEventListener("offline", function(e) {
    myFunction();
}, false);

问:如何命名自执行匿名函数,以便我可以从全局范围调用myFunction?

3 个答案:

答案 0 :(得分:2)

非常简单,只需将您的函数附加到全局对象(窗口):

;(function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {}
    window.myNamedFunction = myFunction;
})(jQuery, window);

答案 1 :(得分:2)

将函数分配给您要使用的任何对象/范围的属性。

;(function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {};
    window.myFunction = myFunction;
})(jQuery, window);

你最好还是希望从你的IIFE返回一些封装了你所有'出口'的东西。

var exports = (function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {};
    return {
        "myFunction": myFunction
    };
})(jQuery, window);

window.addEventListener("offline", function(e) {
    exports.myFunction();
}, false);

AMD对这种编程风格很有帮助。

答案 2 :(得分:1)

使用命名空间并将其推送到全局范围。

window.yourNamespace = window.yourNamespace || {};
window.yourNamespace.myFunction = function() {};
相关问题