【发布时间】:2016-02-14 03:00:32
【问题描述】:
我正在阅读一个必须保持匿名的库的源代码,我看到它使用一个空函数来设置命名空间。它似乎类似于对象字面量表示法 (OLN),只是基是一个函数。
这是一个声明示例。
/**
* Base namespace for FOO library
* @name FOO
* @namespace
*/
function FOO(){}
FOO.bar = 'bar const..';
FOO.fooFunc = function () { /* code */ };
FOO.Bar = function () { /* some constructor */ };
FOO.Bar.prototype.baz = function () { /* A prototype method on FOO.Bar */ };
...
如您所见,FOO 命名空间是一个空函数。将命名空间声明为空函数有什么意义吗?这是对 OLN 模式的滥用吗?看起来这可能是工厂模式的开始。命名空间上没有原型方法(例如FOO.prototype.bar = ...)。调用FOO() 显然什么也没做。有人认识这种模式吗?
【问题讨论】:
标签: javascript namespaces javascript-namespaces