KARABAS интернет-магазин
it-решений
Alexandr Yaovlev 05 Dec 2023 Alexandr Yaovlev 275

Как маркетинг перевернул ООП в JavaScript: основные изменения и их влияние на разработку или Была ли замена половины программистов JavaScript на маркетологов оправдана? Почему мы так считаем, и чего достигли? или Построение новой структуры OOP в JavaScript: комплексное open source решение от маркетологов.

Как маркетинг перевернул ООП в JavaScript: основные изменения и их влияние на разработку или Была ли замена половины программистов JavaScript на маркетологов оправдана? Почему мы так считаем, и чего достигли? или Построение новой структуры OOP в JavaScript: комплексное open source решение от маркетологов.


Об авторе

Хуан Диего Родригес (также известный как Monknow) - фронтенд-разработчик из Венесуэлы, увлекающийся созданием красивых сайтов с использованием современных технологий.


Сравнение JavaScript и Java

Несмотря на то, что название JavaScript было взято из языка Java, эти два языка кардинально отличаются. У JavaScript больше общего с Lisp и Scheme, включая такие особенности как функции первого класса и лексическую область видимости. JavaScript также берет свое прототипное наследование из языка Self. Этот механизм наследования, возможно, не достаточно изучают большинство разработчиков, главным образом потому, что это не является требованием для начала работы с JavaScript.


ООП в JavaScript и Java

Классическое объектно-ориентированное программирование (ООП) вращается вокруг понятия классов и экземпляров и широко используется в таких языках, как Java, C++, C# и многих других. В JavaScript ООП основывается на прототипах, а не на классах и экземплярах. В прототипном ООП нет классов, только объекты, и они создаются непосредственно из других объектов.


Потребность в классах в JavaScript

Мне не нравится подход к классам. Аргументом может служить то, что классический синтаксис улучшает читаемость, заставляя весь код, связанный с классом, находиться внутри блока области видимости. С другой стороны, это вводит в заблуждение и заставляет тысячи разработчиков верить, что в JavaScript есть истинные классы, когда класс в JavaScript ничем не отличается от любого другого объекта-функции.


Приватность и инкапсуляция в JavaScript

Еще одним аргументом против классов является отсутствие приватности и инкапсуляции. У нас нет никакой приватности! Все свойства являются публичными. Мы можем попытаться улучшить это с помощью замыканий.


Альтернатива классам и прототипам в JavaScript: композиция

Прототипы кажутся недоделанными, а классы могут привести к усложнению и созданию ненужных иерархий. К счастью, JavaScript - это мультипарадигмальный язык, и мы ограничиваем себя, если используем только классы или прототипы для повторного использования кода.


Заключение

JavaScript был создан за 10 дней, был испорчен маркетингом и имеет длинный список бесполезных и опасных частей. Но это прекрасный язык и является движущей силой большинства инноваций в веб-разработке сегодня, поэтому он явно сделал что-то хорошее!