В JavaScript любая функция может создавать и возвращать объекты. Если вы делаете это без конструктора, она называется фабричной функцией. Новый синтаксис `class` не может конкурировать с мощностью и гибкостью фабрик - в частности, штампы и пулы объектов - не единственный вариант использования фабрик.

В книге Шаблоны проектирования GoF есть целый раздел по построению объектов, который существует только для того, чтобы обойти ограничения конструкторов и классов.

См. Также: Три различных типа прототипных объектно-ориентированных объектов.

Итог: Класс не дает вам возможности, которая еще не предоставляется фабричными функциями и прототипным ОО, встроенным в язык. . Все, что вы делаете при создании класса, - это выбираете менее мощный и менее гибкий механизм и множество подводных камней и проблем.

Есть ли надежда, что ключевое слово `class` когда-либо будет полезным? Может быть. См. Как исправить ключевое слово класса ES6.

Для тех, кто присоединяется к разговору поздно, см. Два столпа JavaScript, часть 1, где более подробно рассказывается, почему вам следует избегать наследования классов.