javascript - 访问 IIFE 中的构造函数

标签 javascript closures self-executing-function

在 JavaScript 中,我经常看到一个立即调用的匿名函数,其中包含一个构造函数。像这样的事情:

(function(){
    function Constructor{};
    //code and stuff
})();

这似乎很有用,因为它创建了一个闭包(?),因此您可以将函数内的变量与全局作用域分开。我无法理解的是如何从全局范围内访问此构造函数。例如,假设上面的代码包含在一个 JavaScript 文件中,该文件通过 script 标签引入到 HTML 文档中。现在,在文档中(在另一个脚本标记内)如何使用匿名函数中的构造函数实例化对象?

最佳答案

正如您所说,立即调用函数的主要目的是防止全局范围的污染。因此,IIFE 中声明的所有变量和函数只能在该函数内访问。

据我从您的示例中了解到,您正在尝试模块化您的应用程序并将各种应用程序逻辑分离到不同的脚本文件中。我建议您看一下模块模式:

var Module1 = (function() {

    return {
        Constructor: function Constructor(){
            console.log('Hi, there!');
        }
    }
})();

然后,您可以使用以下代码简单地访问构造函数:

var test = Module1.Constructor();

关于javascript - 访问 IIFE 中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27337136/

相关文章:

javascript - 修改自执行函数中的参数

javascript - 作为对象文字属性的自执行函数

javascript - 在对象字面量中调用自执行函数时出现异常

javascript - 如何在vuejs中将vue文件下载为pdf文件?

javascript - 在外部 JS 文件中使用 $ 或 JQuery 关键字

Javascript - 绕过排序尝试产生奇怪的行为

javascript - 我可以为所有 AJAX 请求设置全局 header 吗?

Python 闭包没有按预期工作

javascript - 封闭件损坏 - 请帮我修复它

ios - 在 UIAlertAction 闭包中设置的 Inout 变量未更改值