Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Каковы достоинства и недостатки наследования от прототипа в сравнении с наследованием от класса?

Перерыл уже кучу ресурсов, но вот о достоинствах и недостатках ничего не нашел.


Ответ

В теории прототипы дают больше гибкости. С их помощью можно вытворять такое, что строгому ООПу и не снилось. Поэтому...
В теории
Преимущества:
Умопомрачительная гибкость: возможность менять прототипы во время выполнения программы, генерировать динамические иерархии прототипов и совершать прочие забавные вещи. Вас не смогут уволить, потому что код сможете поддерживать только вы.
Недостатки:
Ваш код никто не будет понимать.
Однако если вы примените эту теорию на практике, то вас засмеют за ненормальное программирование, а то вовсе попросят на выход. Практически всегда вы будете использовать только те возможности прототипов, которые аккуратно ложатся в ООП. Более того, существующие движки джаваскрипта предполагают, что вы будете использовать строгие "классы", и при уходе в динамику сильно проседают по производительности. Так что переходим к суровой правде жизни...
На практике
Преимущества:
Отсутствуют.
Недостатки:
Странный синтаксис. Зоопарк библиотек, эмулирующих обычные классы.
И будем честны: единственный мейнстримовый язык с прототипами — это JavaScript. Это такой язык, который дизайнили 10 дней и накодили за пару месяцев. В новой версии стандарта вводят синтаксический сахар для классов, поэтому старый синтаксис с прототипами уйдёт в прошлое. Посему...
В ближайшем будущем
Преимущества:
Если вы знаете, что такое прототипы, то вы будете на 20% круче тех, кто не знает. Вы сможете гордиться этим абсолютно бесполезным знанием.
Недостатки:
Отсутствуют.

Комментариев нет:

Отправить комментарий