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?