Я хочу добавить к ответу Лайонела, что лучше объявить любую не примитивную конфигурацию в initComponent
.(Под примитивом я подразумеваю строку, логическое значение и число).Array и Object входят в initComponent
.
Таким образом, определение должно выглядеть следующим образом:
Ext.define('My.NewClass', {
extend: 'OldClass',
// here all primitive configs:
cls: 'x-my-cls',
collapsible: true,
region: 'west',
// and so on ...
initComponent: function() {
// here you declare non-primitive configs:
this.tbar = [/* blah-blah */];
this.columns = [/* blah-blah */];
this.viewConfig = {/* blah-blah */};
// and so on ...
this.callParent(arguments);
}
// other stuff
}
Причина, по которой вы должны поместить все не примитивные конфиги в initComponent, заключается в том, что в противном случае конфиги всех экземпляров будут ссылатьсяк тем же объектам.Например, если вы определите NewClass следующим образом:
Ext.define('My.NewClass', {
extend: 'OldClass',
bbar: Ext.create('Ext.toolbar.Toolbar', {
// ...
bbar
всех экземпляров будут ссылаться на один и тот же объект.И поэтому каждый раз, когда вы создаете новый экземпляр, bbar исчезает из предыдущего экземпляра.