什么时候在Polymer 2.0中使用构造函数和super?

时间:2017-08-02 21:51:54

标签: javascript polymer polymer-2.x

构建Polymer 2.0 ES6 Web组件时,会使用以下模式。

constructor() {
  super();
}

Here the documentation describes calling the super(); function when defining an element.

However here in the Shop App该模式仅在以下元素中遵循3次:shop-app.html,shop-ripple-container.html,shop-tabs-overlay.html。

我们何时需要致电super()?该调用何时需要在constructor()函数内?如the Shop app

中的情况所示,不调用super()的后果是什么?

编辑: 用户(@ 4castle)提出了此问题might be a duplicate of this question。我恭敬地不同意。这个问题涉及Polymer,而另一个涉及React。另一个问题询问传递给super()函数的参数。这个问题想知道在super()未被调用时会发生什么以及最佳调用位置(即constructor()内部)。

2 个答案:

答案 0 :(得分:2)

  

我们何时需要致电super()

super()调用元素的超类(父类)的构造函数。如果元素的定义定义了一个扩展另一个类的类,而super()没有显式调用,则该元素默认调用超类的构造函数。

  

此调用何时需要在constructor()函数内?

调用super()的正确位置在元素的constructor()方法内。

  

在Shop应用的情况下,不调用super()的后果是什么?

如果是,

class MyElement extends Polymer.Element {...}

与Shop App的情况一样 - 如果未明确调用Polymer.Element,则默认调用super()构造函数。

答案 1 :(得分:2)

事实上,调用以下内容以获得超级(父级)的全部好处也是一种很好的做法:

ready() {
  super.ready();
}

当组件准备就绪时,它将在Element中调用ready函数。