您的假设几乎是正确的。让我们先回顾一下。
- 它分配一个自执行函数的返回
这称为立即调用函数表达式或IIFE
- 它在此函数内定义了局部变量
这是在Javascript中拥有私有对象字段的方式,因为它不提供
private关键字或功能。
- 它返回包含使用局部变量的逻辑的实际函数。
同样,要点是该局部变量是 private 。
此模式有名称吗?
可以将这种模式称为“模块模式”。报价单:
模块模式使用闭包封装“隐私”,状态和组织。它提供了一种包装公共和私有方法与变量的组合的方法,可以防止碎片泄漏到全局范围内以及意外地与其他开发人员的界面冲突。使用此模式,仅返回公共API,将闭包中的所有其他内容保持私有。
比较这两个示例,我对为什么使用第一个示例的最佳猜测是:
- 它正在实现Singleton设计模式。
- 使用第一个示例,可以控制创建特定类型的对象的方式。与这一点最接近的可以是有效Java中所述的静态工厂方法。
- 如果每次都需要相同的对象状态,这将非常有效。
但是,如果您每次只需要香草对象,那么此模式可能不会增加任何值。



