tl;dr
В JS нет классов, это просто синтаксический сахар.
Отличительная особенность классов - это самостоятельная сущность, которая существует в единственном экземпляре и доступен глобально. В JS "класс" это именованный конструктор + надстройка, которая расширяет прототип и добавляет к инстансу поля с анонимными функциями (то что записывается как static методы). Вы спокойно можете где-то в проекте поменять прототип объекта. Или еще чего.... То есть по сути
class Foo {
constructor() {}
}
это полный эквивалент
function Foo() {
}
и только. Все остальное - сахар над Object.create. То есть как это работает вы знать обязаны, вы должны понимать разницу между объектной моделью в какой-нибудь джаве и javascript.