首页 > 解决方案 > Ext JS 中的多个覆盖

问题描述

Ext JS 中如何处理多个覆盖?他们是被锁住了,还是最后一个定义的赢了?当可能有多个覆盖时,我需要决定是定义覆盖还是直接覆盖一个类。

标签: extjs

解决方案


最后一个获胜,但在调用时会链接覆盖的函数callParent,如下面的Sencha fiddle所示:

Ext.define('A', {
    a: function() {
        console.log('a');
    },
    A: 'A'
});
Ext.define('B', {
    override: 'A',
    a: function() {
        console.log('b');
        this.callParent(arguments);
    },
    A: 'B'
});

Ext.define('C', {
    override: 'A',
    a: function() {
        this.callParent(arguments);
        console.log('c')
    },
    A: 'C'
});

var a = Ext.create('A')
a.a();
console.log(a.A);

结果在控制台:

b
a
c
c


推荐阅读