Voronar
@Voronar
Code typesetter

Почему классы в 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 и не приватный, но хоть нормальные поля есть.
  • Вопрос задан
  • 2616 просмотров
Решения вопроса 1
KorsaR-ZN
@KorsaR-ZN
Да потому-что это всего лишь синтаксический сахар и не более.
Как не было классов в JavaScript, так их и нет...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы