Непонятое объявление класса? Доброе утро, хабралюди!
Натолкнулся на такой вот код: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
162 +2
0
Ответы
1

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

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

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

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

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

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 211 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир