【问题标题】:How to access a class through its object literal's variable?如何通过其对象字面量的变量访问一个类?
【发布时间】:2020-04-16 05:47:57
【问题描述】:

假设我有一个简单的类:

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

然后我将dropdownInstanceelement 存储在我的DOM 中的某个位置。

假设另一个对象在element 上有一个EventListener,并且该对象想要访问Folder,是否可以这样做?

基本上来自element -> dropdownInstance -> Folder 持有它的dropdownInstance

【问题讨论】:

    标签: javascript inheritance


    【解决方案1】:

    要实现这一点,您需要某种类型的参考系统。这就是 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) 来检索 Folder 实例。

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 2022-07-28
      相关资源
      最近更新 更多