与initComponent
相比,我应该何时使用constructor
?
我一直在使用initComponent来扩展我的对象,但查看Ext.define的文档是使用构造函数查看它们然后放置。有什么区别?
比较
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
constructor: function (config) {
this.callSuper(arguments); // calls My.app.Panel's constructor
//...
}
});
到
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
initComponent: function (config) {
Ext.apply(this, config);
this.callParent(arguments);
}
});
我知道有些组件没有初始化(我正在看着你Ext.data.Store
),这导致我只倾向于编写构造函数,因为这应该是通用的。
答案 0 :(得分:36)
constructor
是初始化对象实例的OOP标准,并且在每个ExtJS类(Ext.define
创建的所有内容)中都可用。
initComponent
是ExtJS扩展,用于初始化组件 - 扩展Ext.Component
的类。它使用模板化方法模式,并在自定义组件init之前和之后启用一些标准初始化步骤。像这样:
Ext.Component.constructor() {
- init events
- apply config
- create plugins
- ...
- your custom component initialization (initComponent)
- ...
- init plugins
- etc.
}
我最好的做法是每当我创建自定义组件时使用initComponent
,而仅为通用类使用constructor
。