Лучший способ вызвать метод суперкласса в ExtJS
Вся документация ExtJS и примеры, которые я прочитал, предлагают вызывать методы суперкласса следующим образом:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
MyApp.MyPanel.superclass.initComponent.call(this);
}
});
Я использовал этот шаблон в течение достаточно долгого времени, и главная проблема в том, что когда вы переименовываете свой класс, вы также должны изменить все вызовы методов суперкласса. Это довольно неудобно, часто я забываю, а потом мне приходится выслеживать странные ошибки.
Но читая источникExt.extend()
Я обнаружил, что вместо этого я мог бы использоватьsuperclass()
или жеsuper()
методы, которыеExt.extend()
добавляет к прототипу:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
this.superclass().initComponent.call(this);
}
});
В этом коде переименование MyPanel во что-то другое очень просто - мне просто нужно изменить одну строку.
Но у меня есть сомнения ...
Я нигде не видел этого, и старая мудрость гласит: не стоит полагаться на недокументированное поведение.
Я не нашел ни одного использования этихsuperclass()
а такжеsupr()
методы в исходном коде ExtJS. Зачем создавать их, если вы не собираетесь их использовать?
Может быть, эти методы использовались в какой-то более старой версии ExtJS, но сейчас устарели? Но это кажется такой полезной функцией, с какой стати вы ее осуждаете?
Итак, я должен использовать эти методы или нет?