擴充套件與覆蓋

覆蓋:

覆蓋檔案:

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 提供了兩種主要方法來改變現有類的行為:擴充套件它們並覆蓋它們。每個都有使用前應考慮的好處和陷阱。

擴充套件

擴充套件類會建立一個新類,該類從其父級繼承其行為和配置。通過擴充套件建立新類,可以在中心位置進行重複配置和行為更改,並在整個應用程式中重複使用。擴充套件的最大優點是父類保持完整,可用於不需要擴充套件行為的簡單用例。

擴充套件的良好用例示例包括具有特殊行為的自定義表單欄位,專用模式和一般的自定義元件。

覆蓋

覆蓋類會修改現有類的行為。覆蓋中的配置和方法完全替換它們的父類對應物,建立在整個應用程式中填充的新預設配置和行為。由於其使用的破壞性,應謹慎使用覆蓋; 擴充套件類通常可以提供相同的好處,同時保持父類不受干擾。

但是,在某些情況下,覆蓋可以提供好處。良好的用例包括修復現有類中的錯誤,修改代理行為以將額外資訊附加到請求(例如令牌或會話資料),並且通常強制特定行為成為應用程式中的預設行為。