Как получить доступ к классу через переменную его литерала объекта? - PullRequest
0 голосов
/ 16 апреля 2020

Скажем, у меня есть простой класс:

class Folder {
   constructor() {
      this.title = "a folder";
      this.dropdownInstance = {
         element: document.createElement("div")
      }
   }
}

, и я храню element из dropdownInstance где-то в моем DOM.

Скажем, у другого объекта есть EventListener на что element, и этот объект хочет получить доступ к Folder, возможно ли это сделать?

В основном происходит от element -> dropdownInstance -> Folder, который содержит dropdownInstance

1 Ответ

0 голосов
/ 16 апреля 2020

Для этого вам понадобится система ссылок. Это то, что jQuery позволяет с помощью метода data присоединять произвольные данные к элементам DOM.

Я бы, вероятно, использовал простой массив:

const folders = [];

class Folder {
    constructor(){
        this.title = "a folder";

        this.dropdownInstance = {
            element: document.createElement("div")
        }

        folders.push([this.dropdownInstance.element, this]);
    }

    static getFromElement(el) {
        const folder = folders.find(f => f[0] === el);
        return folder ? folder[1] : null;
    }

}

Вы можете затем просто вызовите Folder.getFromElement (el), чтобы получить экземпляр папки.

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