扩展与覆盖
覆盖:
覆盖文件:
Ext.define('MyApp.override.CornField',
override: 'Ext.form.field.Text',
initComponent: function () {
this.callParent(arguments);
this.setValue('Corn!');
}
);
在 app 中使用:
{
xtype: 'textfield'
}
扩展:
覆盖文件:
Ext.define('MyApp.form.field.CornField',
extend: 'Ext.form.field.Text',
alias: 'widget.cornfield',
initComponent: function () {
this.callParent(arguments);
this.setValue('Corn!');
}
);
在 app 中使用:
{
xtype: 'cornfield'
}
说明
ExtJS 提供了两种主要方法来改变现有类的行为:扩展它们并覆盖它们。每个都有使用前应考虑的好处和陷阱。
扩展
扩展类会创建一个新类,该类从其父级继承其行为和配置。通过扩展创建新类,可以在中心位置进行重复配置和行为更改,并在整个应用程序中重复使用。扩展的最大优点是父类保持完整,可用于不需要扩展行为的简单用例。
扩展的良好用例示例包括具有特殊行为的自定义表单字段,专用模式和一般的自定义组件。
覆盖
覆盖类会修改现有类的行为。覆盖中的配置和方法完全替换它们的父类对应物,创建在整个应用程序中填充的新默认配置和行为。由于其使用的破坏性,应谨慎使用覆盖; 扩展类通常可以提供相同的好处,同时保持父类不受干扰。
但是,在某些情况下,覆盖可以提供好处。良好的用例包括修复现有类中的错误,修改代理行为以将额外信息附加到请求(例如令牌或会话数据),并且通常强制特定行为成为应用程序中的默认行为。