Вся документация 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, но сейчас устарели? Но это кажется такой полезной функцией, с какой стати вы ее осуждаете?
Итак, я должен использовать эти методы или нет?