javascript - 从另一个函数返回自执行函数(IIFE)

标签 javascript

(function($) {

    var foo = (function(){

        //some functions

    })();

    // I can access foo here
    var f = new foo();

})(jQuery);

// But obviously not here since it's in another scope

如何将 foo 返回到窗口作用域,以便可以在外部 IIFE 之外访问它?我尝试过 return foo; 但没有成功。

最佳答案

只需将其设置为窗口属性即可:

(function($) {

    var foo = (function() {

        // some functions

    })();

    window.foo = foo;
//  ^^^^^^^^^^^^^^^^^

})(jQuery);

foo();

但是,将全局对象设置为 window 对象的属性通常会受到轻视。也许您可以通过管理您自己的自定义“全局”对象来模拟这种能力。例如:

var global = {};

(function($) {

    global.foo = (function() {

        // define

    })();

})(jQuery);

global.foo();

这样,在处理各种范围和对象时就不会出现名称冲突。

关于javascript - 从另一个函数返回自执行函数(IIFE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15692128/

相关文章:

javascript - 类型错误:a.dot(...).equals 不是函数

javascript - 根据匹配键添加对象值

javascript - 如何使用 JQuery 在 asp.net 的 TextBox 中输入日期时进行验证?

javascript - 单次触发单击事件监听器

javascript - 从 Google Drive 检索缩略图

Javascript bool 结果失败

javascript - 我对这个 Angularjs ng-repeat 做错了什么?

javascript - 在 JavaScript 中将空格编码为 +

javascript - 如何在javascript中存储表单数据以便在另一个页面或重新打开页面中使用历史记录

javascript - 如何检测 highchart 列 r Shiny 图中的条形中的多次点击