seenAttributes () не является функцией - PullRequest
0 голосов
/ 12 января 2019

У меня есть атрибуты в пользовательском элементе JS

  static get observedAttributes() {
    return ['state','color'];
  }

Как получить массив целом в функциях Callback пользовательского элемента?

this.observedAttributes() не является функцией

Должно быть, я что-то упускаю из виду ...

Обновление после вопроса в комментарии:

Я все время забывал о геттере и сеттерах

Теперь я могу сделать это в конструкторе ():

    this.constructor.observedAttributes.map(attribute => 
    Object.defineProperty(this, attribute, {
      get() {
        return obj.getAttribute(attribute);
      },
      set(newValue) {
        obj.setAttribute(attribute, newValue);
      },
      enumerable: true,//default:false
      configurable: true // default:false
      //writable: true // not valid, since there is a set method!
    }));

(не заботятся о побочных эффектах потребления памяти)

1 Ответ

0 голосов
/ 12 января 2019

observedAttributes определяется как static, поэтому он будет вызываться из класса, а не из экземпляра. observedAttributes также является получателем (get), поэтому вы не будете выполнять его с (). Если вы определили класс пользовательского элемента как FancyButton, вы должны использовать FancyButton.observedAttributes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...