Lepszy sposób wywoływania metody superklasy w ExtJS

Cała dokumentacja i przykłady, które przeczytałem w ExtJS, sugerują takie metody:

MyApp.MyPanel = Ext.extend(Ext.Panel, {
  initComponent: function() {
    // do something MyPanel specific here...
    MyApp.MyPanel.superclass.initComponent.call(this);
  }
});

Używam tego wzorca od dłuższego czasu i głównym problemem jest to, że kiedy zmieniasz nazwę swojej klasy, musisz także zmienić wszystkie wywołania metod nadklasy. To dość niewygodne, często zapomnę, a potem muszę wyśledzić dziwne błędy.

Ale czytanie źródłaExt.extend() Odkryłem, że zamiast tego mogę użyćsuperclass() lubsuper() metody, któreExt.extend() dodaje do prototypu:

MyApp.MyPanel = Ext.extend(Ext.Panel, {
  initComponent: function() {
    // do something MyPanel specific here...
    this.superclass().initComponent.call(this);
  }
});

W tym kodzie zmiana nazwy MyPanel na coś innego jest prosta - muszę tylko zmienić jedną linię.

Ale mam wątpliwości ...

Nigdzie tego nie widziałem, a stara mądrość mówi, że nie powinienem polegać na nieudokumentowanym zachowaniu.

Nie znalazłem ani jednego zastosowaniasuperclass() isupr() metody w kodzie źródłowym ExtJS. Po co tworzyć je, gdy nie zamierzasz ich używać?

Być może te metody były używane w starszych wersjach ExtJS, ale teraz są przestarzałe? Ale wydaje się, że jest to przydatna funkcja, dlaczego miałbyś ją deprecjonować?

Czy powinienem używać tych metod, czy nie?

questionAnswers(6)

yourAnswerToTheQuestion