Здравствуйте.
Интересуюсь новым стандартом 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 и не приватный, но хоть нормальные поля есть.