Javascript ExtJS4-从单个基类扩展不同的组件

Javascript ExtJS4-从单个基类扩展不同的组件,javascript,extjs4,extjs4.2,Javascript,Extjs4,Extjs4.2,我有一个使用ExtJS 4.2的web应用程序。这个应用程序有一系列不同的组件——一个显示一些数据的面板,另一个显示一些其他数据的面板,一个网格,一个图表,等等 要求每个组件至少具有一组特定的功能和属性。因此,我想定义一个“组件”类,我可以从中扩展其他所有内容。例如: Ext.define('MyApp.BaseComponent', { extend: 'Ext.panel.Panel', alias: 'widget.myapp-basecomponent', pr

我有一个使用ExtJS 4.2的web应用程序。这个应用程序有一系列不同的组件——一个显示一些数据的面板,另一个显示一些其他数据的面板,一个网格,一个图表,等等

要求每个组件至少具有一组特定的功能和属性。因此,我想定义一个“组件”类,我可以从中扩展其他所有内容。例如:

Ext.define('MyApp.BaseComponent', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.myapp-basecomponent',

    prop1: true,
    prop2: 17,

    func1: function (a, b) {
        return a + b;
    }
});
然后,我将从该基本组件类扩展应用程序中的每个组件。问题是,如果我将基本组件定义为扩展“Ext.panel.panel”,则只能从中扩展其他面板。我不能从中扩展网格、树等


有什么办法可以做到这一点吗?还是我走错了路?也许我应该把所有不是面板的东西(网格、图表等)都嵌套在面板中,这样它们都可以从BaseComponent扩展?非常感谢您的建议。

如果您只想扩充基本组件类,您可以提供一个覆盖来添加它们:

Ext.define('MyApp.AugmentComponent', {
    override: 'Ext.Component',

    a: 1,
    b: 2,

    fn1: function() {
    }
});

我真的不想那样做。。。我的应用程序中的每个小组件都不需要这些属性和函数。如果你不调用它们,又有什么关系呢?我只是觉得有点不对劲。。。让每个按钮、文本字段等继承一堆无用的属性和函数不会有任何不良影响吗?不,它们将继续在原型上。唯一合理的方法是为每个类(组件、容器、面板、网格、图表)创建自己的扩展,然后混合覆盖。