访问IIFE中的构造函数

时间:2014-12-06 22:08:51

标签: javascript closures self-executing-function

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

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

这看起来很有用,因为它会产生一个Closure(?),因此您可以将函数中的变量与全局范围分开。我无法理解的是如何从全局范围内访问此构造函数。例如,假设上面的代码包含在一个JavaScript文件中,该文件带有脚本标记。现在,在文档中(在另一个脚本标记内)如何使用匿名函数中的构造函数实例化Object?

1 个答案:

答案 0 :(得分:1)

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

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

var Module1 = (function() {

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

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

var test = Module1.Constructor();