2017-08-02 74 views
1

構建Polymer 2.0 ES6 Web組件時,會使用以下模式。何時在Polymer 2.0中使用構造函數和超級函數?

constructor() { 
    super(); 
} 

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

However here in the Shop App圖案僅隨後的3倍,在以下的要素:鋪app.html,店鋪紋波container.html,商店的選項卡-overlay.html。

我們何時需要聯繫super()?這個呼叫什麼時候需要在constructor()函數中?不要求super()出現在the Shop app的情況下會有什麼後果?

編輯: 用戶(@ 4castle)提出了這個問題might be a duplicate of this question。我恭敬地不同意。這個問題涉及Polymer,而另一個涉及React。另一個問題詢問傳遞給super()函數的參數。這個問題想知道當super()未被呼叫時以及呼叫的最佳位置是什麼(即,在constructor()之內或不在)。

+0

可能重複[什麼是超級()做任何參數?](https://stackoverflow.com/questions/39822941/what-does-super-do-with-any-arguments) – 4castle

+0

'super()當一個類擴展另一個類時,''是必需的。否則,如果你不先調用'super()'來訪問'this',它會拋出'ReferenceError'。 – 4castle

+0

@ 4castle:我添加並根據您的評論和您指出的其他問題回答。我也編輯了這個問題來解釋爲什麼我認爲它是不同的。如果你不介意的話,請告訴我你是否在正確的軌道上。 – Mowzer

回答

2

我們什麼時候需要致電super()

super()調用元素的(父類)的構造函數。如果一個元素的定義定義了一個擴展另一個類的類,並且沒有明確調用它,那麼該元素默認調用超類的構造函數。

這個呼叫什麼時候需要在constructor()函數中?

要調用super()的適當位置在元素的constructor()方法內。

不打電話super()出現在商店應用程序的情況下會有什麼後果?

在,

class MyElement extends Polymer.Element {...} 

在商店應用程序的情況下的情況 - Polymer.Element構造是由默認調用如果super()沒有顯式調用。

1

事實上它也是很好的做法,調用下面讓你超的全部好處(父):

ready() { 
    super.ready(); 
} 

將調用準備功能的元素,當你組件已準備就緒。