Сообщение от FINoM
|
я просто не могу упустить возможности порекомендовать тебе заюзать Матрешку
|
Зачем она здесь? В моем примере символ для:
1. приватности
2. скорости набора кода
3. лучшего сжатия кода
Сообщение от trikadin
|
так ты тут хочешь сделать enumerable свойство, которое объявлено в прототипе объекта.
|
нет другого способа в es6 объявлять геттеры и сеттеры в классах
devote, спасибо.
Сообщение от devote
|
var self = this;
|
не надо (на первый взгляд), т.к. arrow function
Я для наглядности для себя сделал так
'use strict';
const __PROP = Symbol();
class Foo {
constructor() {
this.__setEnumerable('prop', true);
this.prop = 1;
}
get prop() {
return this[__PROP];
}
set prop(value) {
this[__PROP] = value;
}
__setEnumerable(prop, state) {
let prototype = this.constructor.prototype;
let descriptor = Object.getOwnPropertyDescriptor(prototype, prop);
descriptor.enumerable = state;
Object.defineProperty(this, prop, descriptor);
}
}
let bar = new Foo();
console.log(bar.prop); // 1
console.log(Object.keys(bar)); // ["prop"]
Жалко, что так нельзя:
class Foo {
constructor() {
this.prop.__enumerable = true;
this.prop = 1;
}
}