@cyb1ove

Как получить ссылку на объект из проксирующего метода?

const availableTags = ['div', 'h1', 'p', 'span'];

function tagsCollector() {
  this.tags = [];

  this.addTag = function(tag) {
    this.tags.push(tag);
  }
}

class Format {
  constructor() {
    this.tags = new tagsCollector();
  }
}

availableTags.forEach(tag => {
  Object.defineProperty(Format.prototype, tag, {
    value: new Proxy(text => {
      return `
        <${tag}>
          <${this.tags.reduceRight((html, curtag) => {
            return `<${curtag}>${html}</${curtag}>`;
          }, text)}
        </${tag}>
      `
    }, { get: (_, props) => {
      this.tags.addTag(tag);

      return this;
    }})
  })
})

Задача field chained HTML formatting c codewars. Нужно реализовать паттерн fluent interface типа Format.div.p('text'). Для каждого тега создаю геттер, который добавляет тег в tagCollector и возвращает текущий объект Format. Думал проксировать геттер, но тогда теряется контекст вызова и я не могу получить доступ к this.tags.
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы