Непонятое объявление класса? Доброе утро, хабралюди!
Натолкнулся на такой вот код:var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
Это вроде бы объявление класса, но чем оно лучше/хуже «традиционной» реализации?var Greeter = function(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
P.S.: Данный код генерирует TypeScript

21 Авг 2019 в 07:09
190 +1
1
Ответы
1

Да, оба этих кода являются корректными способами создания класса на JavaScript. Однако первый способ, использующий самовызывающуюся функцию, называемую также IIFE (Immediately Invoked Function Expression), предпочтительнее в некоторых случаях.

Преимущества использования IIFE в данном контексте включают в себя:

Защита переменных: переменные, объявленные внутри IIFE, не видны извне, что помогает избежать конфликтов имен с глобальными переменными или другими скриптами.Оптимизация памяти: переменные, объявленные вне конструктора, будут существовать лишь один раз для всего класса.

Тем не менее, в вашем конкретном примере не видно явных преимуществ использования IIFE. Традиционный способ объявления класса также является хорошим и читаемым вариантом.

В целом, выбор между этими двумя подходами зависит от ваших потребностей проекта и предпочтений разработчика.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир