我有一個類A是ExtJs 4.x中的類B的擴展。是否有一個函數判斷類A是否像Java中的「if(obj instanceof Class)」一樣從類B擴展而來。如何知道類A從ExtJs中的B類擴展
1
A
回答
0
要在@ SRA的建議擴大,您還可以在組件級使用isXType()
:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.AbstractComponent-method-isXType
1
我推薦埃文斯回答!
但還有其他方法可以通過使用getXTypes()方法在組件級別執行此操作,該方法以字符串形式返回xType鏈。
如果搜索到的部件(組件)是字符串的一部分,您需要查找。
var splitted = ref.getXTypes().split('/'),
len = splitted.length,
i = 0;
for(;i < len; i++) {
if(lookupType == splitted[i])
// do something
}
編輯
由於另一個問題,我絆倒了,似乎工作的另一種方式。
您可以使用self
,superclass
和$className
屬性在類層次結構中向上導航。
這裏有一個例子:
Ext.getCmp('customform-1746').self.superclass.$className // echo Ext.form.Panel
Ext.getCmp('customform-1746').self.superclass.self.superclass.$className // echo Ext.panel.Panel
你可以簡單的構建,檢查遞歸方法,並返回要麼true
或false
。但再次,instanceof
運營商可能在這裏更快!
2
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);
相關問題
- 1. 如何將B類變量傳遞給A類,如果A類擴展B類
- 2. 如何知道類A是否直接從C#中的類B繼承?
- 3. 如何知道某個類是否擴展了JWindow類?
- 4. 如何擴展並計算log(a + b)?
- 5. 擴展A類與B類,但在B類方法不能達到A級的屬性
- 6. 如果特質A [+ T]擴展B,我應該能夠傳遞需要B的類型A [T]的類嗎?
- 7. 區別 「A級; B類」 和 「類A :: B」
- 8. A→B,B→A類協會
- 9. A/B Joomla測試擴展?
- 10. 創建ExtJs擴展類
- 11. 任何人都知道如何繼承擴展類的父項?
- 12. B類中的A類變量和A類中的B類指針變量?
- 13. 如何從類b訪問位於類a中的數組realtime
- 14. 如何從B類中的類A定義一個對象
- 15. B類延伸A類,但A類有B類性質
- 16. 當B類從A類繼承時,它是否必須是「B類是 - A類」?
- 17. 如何知道一個擴展類的成員打字稿
- 18. 如何從A類的方法B調用A類的方法A
- 19. Style類A + B類和A類只
- 20. 如何從Color類擴展
- 21. 從類A調用類B並繼承類A的屬性?
- 22. java class A擴展B類和方法覆蓋
- 23. 之間有什麼區別「C類擴展A和B」和「C類擴展B」時性狀B延伸性狀A
- 24. 當A類擴展B類,它們都具有相同的屬性
- 25. 如何知道擴展類時要實現哪些方法
- 26. 擴展類動態的ExtJS的
- 27. 如何知道通過作爲擴展抽象類parather通過的類
- 28. 如何擴展類型類
- 29. Javascript擴展類與道具?
- 30. Ruby Proc:從B類中的A類調用方法,並使用B類'方法'
注意,對於組件這隻作品(和子類)。 –