Почему классы в ES6 такие убогие? Здравствуйте. Интересуюсь новым стандартом ES6. Посмотрел на реализацию классов и разочаровался. Больше всего не понравилось то, что в новом стандарте нельзя объявлять поля в теле объявления класса. Даже в ES5 мы могли в функции конструкторе имитировать приватные поля с помощью замыкания.var Person = (function() { var name; function Person(_name) { name = _name; } Person.prototype.getName = function() { return name; }; return Person; }()); var p = new Person("Kirill"); console.log(p.getName()); // Kirill Посмотрел на быдлокодерские приёмы с использованием Symbol и WeakMap для имитации приватности в ES6 и всё равно остался недоволен.(function() { const name = Symbol();
class Person { constructor(_name) { this[name] = _name; } getName() { return this[name]; } }
var p = new Person("Kirill"); console.log(p.getName()); // Kirill }()); Почему ES6 классы такие недоделанные? Сделали бы хотя бы как в TypeScript. Хоть там private и не приватный, но хоть нормальные поля есть.
Вопрос о том, почему ES6 классы выглядят "недоделанными", вызывает разные мнения среди разработчиков. Некоторые считают, что JavaScript в целом не был задуман как язык с классами и наследованием, и поэтому добавление классов в ES6 является лишь попыткой упростить разработку для людей, привыкших к объектно-ориентированному программированию.
Другие считают, что ES6 классы могли быть более полноценными и совершенными, но создатели стандарта ограничили свои возможности, чтобы сохранить обратную совместимость с существующими кодовыми базами на JavaScript.
В любом случае, у разработчиков всегда есть возможность использовать TypeScript, который предоставляет более расширенные функциональные возможности для работы с классами, включая более мощную систему типов и поддержку приватных полей. Таким образом, если вам не нравится ограниченность ES6 классов, вы можете рассмотреть вариант использования TypeScript для вашего проекта.
Вопрос о том, почему ES6 классы выглядят "недоделанными", вызывает разные мнения среди разработчиков. Некоторые считают, что JavaScript в целом не был задуман как язык с классами и наследованием, и поэтому добавление классов в ES6 является лишь попыткой упростить разработку для людей, привыкших к объектно-ориентированному программированию.
Другие считают, что ES6 классы могли быть более полноценными и совершенными, но создатели стандарта ограничили свои возможности, чтобы сохранить обратную совместимость с существующими кодовыми базами на JavaScript.
В любом случае, у разработчиков всегда есть возможность использовать TypeScript, который предоставляет более расширенные функциональные возможности для работы с классами, включая более мощную систему типов и поддержку приватных полей. Таким образом, если вам не нравится ограниченность ES6 классов, вы можете рассмотреть вариант использования TypeScript для вашего проекта.