Итак, я продолжаю учиться…

Я пришел сюда сегодня с опытом C++. Итак, я знаю определенное количество объектно-ориентированных вещей, классов, объектов и так далее. То, что я пытаюсь изучить, это немного javascript.

Javascript также имеет классы, но наследование работает немного по-другому. Это объектно-ориентированный динамический язык. Динамичность обеспечивает загрузку различных действий над кодом. Один из них — прототипическое наследование.

В C++ простое наследование — это «наследование классов» в javascript. Но, насколько я знаю, наследование классов не поощряется.

Вместо этого в javascript используется прототипное наследование.

Во-первых, класс — это план набора объектов. Автомобиль - это класс, например. Volvo V40 — объект класса автомобилей.

Прототип в javascript — это объект.

Итак, наследование C++ или наследование классов: вы создаете новый класс, получаете свойства супер/базового класса и расширяете их. Это вполне нормально для C++, потому что определения классов не меняются при обычном использовании C++. Вы определяете класс, используете его везде, где хотите создать новый объект. Вы не определяете новые классы по ходу работы, они предопределены статически.

С другой стороны, javascript динамичен, объект можно создать с помощью любого чертежа. Вам не нужно указывать их в заголовочных файлах, а реализовать в файле cpp. Вы создаете объект, динамически вставляете столько свойств, сколько хотите.

Это все меняет.

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

Это все. Вы создаете объект на ходу, хотите что-то еще, немного больше; создайте еще один объект (прототип), сделайте так, чтобы он наследовал свойства первого, добавьте еще пару, и все готово!