gpt4 book ai didi

extjs4 - 定义对象时的initComponent vs构造函数

转载 作者:行者123 更新时间:2023-12-03 12:08:46 24 4
gpt4 key购买 nike

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),这使我倾向于只重写构造函数,因为这应该是通用的。

最佳答案

constructor是用于初始化对象实例的OOP标准,并且在每个ExtJS类(由Ext.define创建的所有内容)中都可用。
initComponent是ExtJS扩展,用于初始化组件-扩展Ext.Component的类。它使用模板化的方法模式,并在自定义组件初始化之前和之后启用一些标准的初始化步骤。像这样:

Ext.Component.constructor() {
- init events
- apply config
- create plugins
- ...
- your custom component initialization (initComponent)
- ...
- init plugins
- etc.
}

我最好的做法是在每次创建自定义组件时都使用 initComponent,而仅对通用类使用 constructor

关于extjs4 - 定义对象时的initComponent vs构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com