После изучения библиотеки JavaScript , которая меня заинтересовала, я наткнулся на этот странный IIFE.Я не могу найти никакой информации об этом шаблоне, и я полагаю, что он специально создан для этого варианта использования.Я не могу обернуть голову вокруг того, что здесь происходит, но интуиция заставляет меня думать, что это может быть похоже на паттерн Синглтона.Вот сокращенный пример, демонстрирующий то, что я считаю ядром кода:
var Ctor = (function () {
function dostuff(_this, args...){}//only used within this iife
var Ctor = function (args...) {
if (!this || this === window) {
return new Ctor(args...);
}
dostuff(this, args...);
return this;
};
return Ctor;
})();
Обратите внимание, я изменил имена функций, чтобы отразить то, за что, как я считаю, они ответственны, но мои предположенияможет быть неправильно, и я мог бы сделать код еще более непонятным.Источник, на который я ссылаюсь, имеет длину около 60 строк, поэтому я бы посоветовал взглянуть на подсказки, если эта версия не имеет смысла.(Внесенные мной изменения: Ctor <=> Bind, Dostuff <=> Extended)
Что касается моих вопросов:
- Что такое шаблон проектирования?(если применимо)
- Что вдохновляет на использование такого шаблона?
- Какие существуют другие приложения для этого шаблона в реальном мире?
- Существует ли более стандартный /читаемый способ написания этого, который производит ту же функциональность?