擴充套件與覆蓋
覆蓋:
覆蓋檔案:
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 提供了兩種主要方法來改變現有類的行為:擴充套件它們並覆蓋它們。每個都有使用前應考慮的好處和陷阱。
擴充套件
擴充套件類會建立一個新類,該類從其父級繼承其行為和配置。通過擴充套件建立新類,可以在中心位置進行重複配置和行為更改,並在整個應用程式中重複使用。擴充套件的最大優點是父類保持完整,可用於不需要擴充套件行為的簡單用例。
擴充套件的良好用例示例包括具有特殊行為的自定義表單欄位,專用模式和一般的自定義元件。
覆蓋
覆蓋類會修改現有類的行為。覆蓋中的配置和方法完全替換它們的父類對應物,建立在整個應用程式中填充的新預設配置和行為。由於其使用的破壞性,應謹慎使用覆蓋; 擴充套件類通常可以提供相同的好處,同時保持父類不受干擾。
但是,在某些情況下,覆蓋可以提供好處。良好的用例包括修復現有類中的錯誤,修改代理行為以將額外資訊附加到請求(例如令牌或會話資料),並且通常強制特定行為成為應用程式中的預設行為。