什么是JS加载模块的上下文中立即执行工厂的功能?(What is an immediately ex

2019-09-16 08:26发布

在Require.js文档,在部分称为为什么AMD ,以下是常见:

如何是当今定义的JavaScript代码块?

在其他的答案如下:

  • 通过立即执行工厂函数定义。

我明白了(至少我认为我这样做)是一个javascript工厂函数是简单的返回一个对象的新实例的功能,但我不明白这意味着什么这个问题的背景下。 有人能解释一下吗?

Answer 1:

我的猜测是你是不是清楚一个javascript“工厂功能”和构造函数之间的不同。 我平时看到那句“ 立即调用的函数表达式 ”或IIFE按阿迪·奥斯马尼的书或文章 ,但我相信IEFF是相同结构的引用。 在IEFF(使用他们的术语)具有这一基本公式:

(function () { return {};})();

这基本上是一个JavaScript的模式用于创建功能范围,从而给(/黑客),你在暴露了一些控制,但并非所有的对象是范围的范围内,主叫。 不要让“工厂函数”混同于一个构造函数。 你不使用new与IIFE关键字,但你用传统的JavaScript构造函数做的。 构造函数是如何创建对象实例,通常你会创造出很多实例,每个实例具有独特的状态。 工厂功能帮助创建干净封装模块,通常你只需要调用一次,并得到了你整个应用程序生命周期到单个模块实例的引用。



Answer 2:

你可以看到在下面的示例代码为什么AMD

(function () {
     var $ = this.jQuery;
     this.myExample = function () {};
}());

这是立即执行工厂函数的一个例子。 所以这个功能将在解释的时间执行。 我们应该考虑的jQuery加载这个例子之前,[因为它使用JQuery。 这是工作RequireJS加载所需的JavaScript文件按照我们的订单。



文章来源: What is an immediately executed factory function in the context of JS module loading?