访问 IIFE 中的构造函数

Accessing constructor within an IIFE

本文关键字:构造函数 IIFE 访问      更新时间:2023-09-26

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

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

这似乎是有益的,因为它会产生闭包 (?),因此您可以将函数中的变量与全局范围分开。我难以理解的是我将如何从全局范围内访问此构造函数。例如,假设上面的代码包含在一个JavaScript文件中,该文件被带到带有脚本标签的HTML文档中。现在,在文档中(在另一个脚本标记中),如何使用匿名函数中的构造函数实例化对象?

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

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

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

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

var test = Module1.Constructor();