在Require.js文档中,在名为Why AMD的部分中,询问以下内容:
今天如何定义JavaScript代码?
其他答案如下:
我理解(至少我认为我这样做)javascript工厂函数只是一个返回对象新实例的函数,但我不明白这个问题在这个问题的上下文中意味着什么。有人可以解释一下吗?
答案 0 :(得分:2)
我的猜测是你不清楚javascript“工厂函数”和构造函数之间的差异。根据Addy Osmani的书或immediately-invoked function expression,我通常会看到短语“this article”或IIFE,但我相信IEFF是对同一结构的引用。在IEFF中(使用他们的术语)有这个基本公式:
(function () { return {};})();
它基本上是用于创建函数作用域的javascript模式(/ hack),因此可以控制将该作用域内的一些但不是所有对象暴露给调用者。不要让“工厂函数”与构造函数混淆。您不要将new
关键字与IIFE一起使用,而是使用传统的javascript构造函数。构造函数是关于创建对象实例的,通常您将创建许多实例,每个实例都具有唯一的状态。工厂函数可以帮助创建干净的封装模块,通常只需要调用一次,并在整个应用程序生命周期内获得对单个模块实例的引用。
答案 1 :(得分:0)