如何访问Web组件上的observedAttributes

时间:2018-11-21 08:55:48

标签: javascript html ecmascript-6 web-component es6-class

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

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

class Foo extends HTMLElement {
    connectedCallback() {
        console.log(this.observedAttributes); // <= undefined
    }
}

class Bar extends Foo {
    static get observedAttributes() {
        return ['bar'];
    }
}

这有可能吗?观察到的属性是否有吸气剂? 我认为这里的困难在于获取父类的observed attributes。因为如果在同一班上,您可以像@javimovi所述的Foo.observedAttributes

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

谢谢!

1 个答案:

答案 0 :(得分:1)

找到了!: 可以使用constructor

  

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

使用前面提到的示例。

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

class Bar extends Foo {
  static get observedAttributes() {
    return ['bar'];
  }
}