@HealSpirit

Как с помощью proxy обратиться к несуществующему свойству объекта, созданного через class?

Есть такой класс:
class EmailParser{
    constructor(email){
        this.email = email;
    }
}

У создаваемого объекта должно быть только 1 свойство email, хранящиеся в конструкторе:
let parser = new EmailParser('some@email.ru');
console.log(parser.email);

Все остальные свойства не должны хранится в конструкторе, а перехватываться get-запросами. Обращение к каждому свойству должно генерировать свою информацию:
let parser = new EmailParser('some@email.ru');
console.log(parser.propertyA); // some inf A
console.log(parser.propertyB); // some inf B

Чтобы не городить get-запросы к каждому свойству через Object.defineProperty я использую прокси.
class EmailParser{
    constructor(email){
        this.email = email;
        this.data = new Proxy(this, {
            get: (target, name) => {
                ...
            }
        });
    }
}

Правильно ли я это делаю или нет, я не знаю, но теперь чтобы обратится к свойству propertyA я использую parser.data.propertyA, а не parser.propertyA. Как это сделать правильно в текущих условиях, используя parser.propertyA?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Вместо this.data = new Proxy(... сделайте

return new Proxy(this, {
  get(target, name) {
    return name in target
      ? target[name]
      : `Свойства ${name} нет`
  },
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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