Я читал исходный код библиотеки, который должен оставаться анонимным, и я вижу, что он использует пустую функцию для настройки пространства имен. Он, похоже, похож на объектную нотацию (OLN), за исключением того, что базой является функция.Зачем использовать пространство имен javascript как функцию?
Вот пример декларации.
/**
* 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()
явно ничего не делает. Кто-нибудь признает этот шаблон?
Это оба хорошие моменты. Хотя, я не вижу, чтобы библиотека использовала подъем. – alex
Я полагаю, что он сохраняет 'FOO || (FOO = function() {}) 'type проверяет, объединены ли модули в одну область с неизвестным порядком. – joews