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

Итак, я должен использовать эти методы или нет?

Ответы на вопрос(6)

Ваш ответ на вопрос