如何知道类A是从ExtJs中的类B扩展而来的
我有一个类a是从ExtJS4.x中的类B扩展而来的。是否有一个函数判断类a是从类B扩展而来的,比如Java中的“if(obj instanceof class)”。我推荐evans回答强> 但是,在组件级别,还有其他方法可以通过使用将xType链作为字符串返回的方法来实现 您需要查找搜索的小部件(组件)是否是字符串的一部分如何知道类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
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);