Поскольку довольно много динамических языков программирования имеют функцию утилитной типизации , и они также могут открывать и изменять методы класса или экземпляра в любое время (например, Ruby и Python ), тогда…
Вопрос 1) Зачем нужен класс на динамическом языке? Почему язык спроектирован таким образом, чтобы использовать класс как своего рода «шаблон» вместо того, чтобы делать его как прототип и просто использовать объект?
Также JavaScript основан на прототипах, но CoffeeScript (расширенная версия JavaScript) выбирает путь на основе классов. И то же самое для Lua (на основе прототипов) и MoonScript (на основе классов). Кроме того, есть класс в ES 6. Итак ...
Вопрос 2) Предполагается ли, что если вы попытаетесь улучшить язык, основанный на прототипах, помимо прочего, вы должны изменить его на класс? Если нет, то почему это так устроено?
class
ключевое слово в следующем стандарте ECMAScript (ECMAScript 6). Поддержка классов в JavaScript планировалась давно. Теперь, что это такое - классы - это просто синтаксический сахар, проще рассуждать о модели для объектов одного типа. Именно так в JS и так в Python и других динамических языках.