Próbuję objąć głowicę modułami javascript, ale nie jestem pewien, jak podzielić moduł na kolejne moduły podrzędne. Czytałem, że funkcje zagnieżdżone nie są świetnym pomysłem ze względu na wydajność, więc jak mogę podzielić funkcję w module? Na przykład, powiedzmy, że mam następujący moduł:Wzorzec modułu JavaScript, funkcje zagnieżdżone i moduły podrzędne
var Editor = {};
Editor.build = (function() {
var x = 100;
return {
bigFunction: function() {
// This is where I need to define a couple smaller functions
// should I create a new module for bigFunction? If so, should it be nested in Editor.build somehow?
}
};
})();
bigFunction jest powiązany tylko z Editor.build. Czy powinienem dołączyć mniejsze funkcje tworzące bigFunction do prototypowego obiektu bigFunction? Nie jestem nawet pewien, czy to miałoby sens.
var Editor = {};
Editor.build = (function() {
var x = 100;
return {
bigFunction: function() {
bigFunction.smallFunction();
bigFunction.prototype.smallFunction = function(){ /*do something */ };
// not sure if this even makes sense
}
};
})();
Czy ktoś może mnie tu podrzucić we właściwym kierunku? Jest wiele mylących informacji w Internecie i chciałbym po prostu wskazać, jak sobie poradzić z tego typu modularyzacją.
Dziękuję.
Nie wydaje się szczególnie przydatna do przechowywania konstruktora i jego prototyp w zamknięciu, to znaczy, że nie można łatwo przedłużyć lub zmodyfikować prototyp później. Trudno dostrzec korzyści dla standardowych deklaracji funkcji i przypisania prototypów. Wzorzec modułu dotyczy tak naprawdę modułów, tj. Jednego z obiektów, a nie konstruktorów. – RobG
@RobG - Pierwszy jest zdecydowanie bardziej samodzielny. Różnica między tą a standardową funkcją polega na tym, że otrzymasz unikalne przedmioty. Drugie podejście jest bardziej zgodne ze wzorem modułu. Mógłbym umieścić trzeci, w którym wykorzystuje prototyp jako podejście rozszerzające. –
@RobG - Jak zaimplementować moduły w javascript? –