Новые es6 классы, имеют геттеры и нормально наследуемые cтатичные свойства,
но у них есть один существенный недостаток структуры декларации класса:
Между конструктором и методами в публичной областью нету общего скуопа, а так же аргументы конструктора недоступны из публичных методов.
Следовательно, нам приходится выносить локальные переменные в публичную область, чтобы иметь к ним доступ из публичным методов:
//было:
function Foo (element) {
var foo = 123;
return {