Если коротко, то JS это прототипный язык, само ядро отличается от других ООП языков.
Те же классы это синтаксический сахар над функциями-конструкторами с их прототипами.
Нет поддержки интерфейсов, типов, абстрактных классов, отсутствует инкапсуляция по умолчанию без танцов с бубном в виде модулей.
Если интересует frontend с полноценным ООП, используйте TypeScript. В результате это будет тот же JS, но в процессе работы вы сможете пользоваться всеми прелестями ООП.