Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переопределение метода модуля (https://javascript.ru/forum/misc/80220-pereopredelenie-metoda-modulya.html)

IgorFomenko 10.05.2020 19:24

Переопределение метода модуля
 
Здравствуйте, читаю в книге про переопределение метода модуля
geoModule = (function(me) {
var oldCalculateCircleArea = me.calculateCircleArea; 
me.calculateCircleArea = function(radius) {
return oldCalculateCircleArea(radius).toFixed(2);
};
return me;
})(geoModule);

возникает вопрос, зачем оборачивать все это в IIFE, если можно сделать просто
geoModule.calculateCircleArea = function(radius) {
return geoModule.calculateCircleArea (radius).toFixed(2);

или автор просто привел наиболее общий подход, позволяющий и при переопределении обеспечить приватность некоторых переменных?

Rise 10.05.2020 19:48

Цитата:

Сообщение от IgorFomenko
если можно сделать просто

Так будет бесконечная рекурсия.

Nexus 10.05.2020 19:51

Цитата:

Сообщение от IgorFomenko
если можно сделать просто

Попробуйте так сделать. Не проверял, но думаю, что будет переполнение стека вызовов.

В IIFE автор оборачивает свой код для того, чтобы либо изолировать свой код от всего остального, либо чтобы не мусорить в глобальной области видимости.

IgorFomenko 10.05.2020 20:53

Да, спасибо, переполнение есть, поэтому вводится промежуточная переменная, а потом, чтобы не мусорить в Global все это оборачивается в IIFE. Спасибо, должен был сам догадаться, но неудачно поставил эксперимент.


Часовой пояс GMT +3, время: 11:07.