代码之家  ›  专栏  ›  技术社区  ›  chitzui

如何访问Web组件上的ObservedAttributes

  •  0
  • chitzui  · 技术社区  · 7 年前

    因此,在Web组件中,可以使用 attributeChangedCallback 一旦指定了要使用的属性 static get observedAttributes() { return ['myAttribute']; } .

    如何从我的子类中列出/访问观察到的属性?

    class Foo extends HTMLElement {
        connectedCallback() {
            console.log(this.observedAttributes); // <= undefined
        }
    }
    
    class Bar extends Foo {
        static get observedAttributes() {
            return ['bar'];
        }
    }
    

    这有可能吗?观察到的属性是否有getter? 我认为这里的困难在于 observed attributes 父类的。因为如果在同一个班级,你可以 Foo.observedAttributes 正如@javimovi提到的。

    我添加了一个jsbin来玩: https://jsbin.com/sonekedavo/edit?js,console

    谢谢您!

    1 回复  |  直到 7 年前
        1
  •  1
  •   chitzui    7 年前

    找到它了!: 这个 constructor 可以使用:

    返回对创建实例对象的对象构造函数函数的引用

    使用前面提到的例子。

    class Foo extends HTMLElement {
      connectedCallback() {
        console.log(this.constructor.observedAttributes); // <= ['bar']
      }
    }
    
    class Bar extends Foo {
      static get observedAttributes() {
        return ['bar'];
      }
    }