(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/