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