Obecnie znam dwa sposoby konstruowania singletonów w JavaScript. Po pierwsze:Jak utworzyć singleton JavaScript z konstruktorem bez użycia zwrotu?
var singleton = {
publicVariable: "I'm public",
publicMethod: function() {}
};
Jest doskonały z wyjątkiem tego, że nie ma konstruktora, w którym mógłbym uruchomić kod inicjalizacyjny.
drugie:
(function() {
var privateVariable = "I'm private";
var privateFunction = function() {}
return {
publicVariable: "I'm public",
publicMethod: function() {}
}
})();
Pierwsza wersja nie posiada właściwości prywatnych ani nie ma konstruktora, ale jest szybsze i prostsze. Druga wersja jest bardziej skomplikowana, brzydka, ale ma konstruktora i właściwości prywatne.
Nie potrzebuję prywatnych nieruchomości, po prostu chcę mieć konstruktora. Czy jest coś, czego mi brakuje, czy też oba podejścia są powyżej jedynych, które mam?
Drugie podejście nie jest "brzydkie"; to naturalna część języka. Możliwość tworzenia funkcji za pomocą funkcji jest jedną z najpotężniejszych funkcji Javascript. – Pointy