Если у вас есть один класс, который расширяет другой класс, вы можете вызывать «родительские» методы класса, используя свойство суперкласса в определении класса.
В приведенном ниже примере мы добавляем специальную функцию mySpecial add и вызываем функцию добавления родительских классов.
Ext.ux.myForm = Ext.extend(Ext.form.FormPanel, {
...
mySpecialAdd: function(comp, anExtraParam) {
// some special handling here
...
// call parent class add
return Ext.ux.myForm.superclass.add.call(this, comp);
}
})
вместо звонка вы также можете выбрать применить
Ext.ux.myForm = Ext.extend(Ext.form.FormPanel, {
...
mySpecialAdd: function(comp, anExtraParam) {
// some special handling here
...
// call parent class add
return Ext.ux.myForm.superclass.add.apply(this, [comp]);
}
})
Обратите внимание, что "this" все равно будет вашим новым классом, поэтому любая другая перезаписанная вами функция будет вызываться из родительского класса, а не из функции родительского класса.
Пример
Ext.form.FormPanel имеет метод onAdd, который вызывается в Ext.form.FormPanel.add, поэтому если вы перезаписываете onAdd, то вызывается ваша функция.
Ext.ux.myForm = Ext.extend(Ext.form.FormPanel, {
...
mySpecialAdd: function(comp, anExtraParam) {
// some special handling here
...
// call parent class add
return Ext.ux.myForm.superclass.add.apply(this, [comp]);
},
// even though onAdd is marked as private you are actually still overwriting it here
// because of the way its implemented in Ext 3
onAdd: function(c) {
// this will get called from the parent class (Ext.form.FormPanel) add method.
...
// so make sure you handle it nicely
Ext.ux.myForm.superclass.onAdd.call(this, c);
...
}
})