0

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

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

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

4

1 回答 1

2

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

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

var Module1 = (function() {

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

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

var test = Module1.Constructor();
于 2014-12-06T22:32:29.980 回答