如何知道类A是从ExtJs中的类B扩展而来的

如何知道类A是从ExtJs中的类B扩展而来的,extjs,Extjs,我有一个类a是从ExtJS4.x中的类B扩展而来的。是否有一个函数判断类a是从类B扩展而来的,比如Java中的“if(obj instanceof class)”。我推荐evans回答 但是,在组件级别,还有其他方法可以通过使用将xType链作为字符串返回的方法来实现 您需要查找搜索的小部件(组件)是否是字符串的一部分 var splitted = ref.getXTypes().split('/'), len = splitted.length, i = 0; for(;i

我有一个类a是从ExtJS4.x中的类B扩展而来的。是否有一个函数判断类a是从类B扩展而来的,比如Java中的“if(obj instanceof class)”。

我推荐evans回答

但是,在组件级别,还有其他方法可以通过使用将xType链作为字符串返回的方法来实现

您需要查找搜索的小部件(组件)是否是字符串的一部分

var splitted = ref.getXTypes().split('/'),
    len = splitted.length,
    i = 0;

for(;i < len; i++) {
    if(lookupType == splitted[i])
        // do something
}

您可以简单地构建递归方法,该方法检查并返回
true
false
。但是,这里的
instanceof
操作符可能要快得多

JS有一个instanceof操作符:

Ext.define('A', {
});

Ext.define('B', {
    extend: 'A'
});

Ext.define('C', {
    extend: 'B'
});

Ext.define('D', {
});

console.log(new B() instanceof A);
console.log(new C() instanceof A);
console.log(new D() instanceof A);

要扩展@sra的建议,您还可以在组件级别使用
isXType()

Ext.define('A', {
});

Ext.define('B', {
    extend: 'A'
});

Ext.define('C', {
    extend: 'B'
});

Ext.define('D', {
});

console.log(new B() instanceof A);
console.log(new C() instanceof A);
console.log(new D() instanceof A);