вообщем написал вот такую функцию:
function is (className, object) {
var cl = Ext.ClassManager.get(Ext.getClassName(object)) || {};
do {
if (cl.$className === className)
return true;
} while (cl = cl.superclass);
return false;
}
аргументами которой является имя класса и объект. функция проверяет, есть ли в наследниках данного объекта данный класс. например:
мы создаем вот такие экземпляры классов:
var myGrid = Ext.create('Ext.grid.Panel', {/*аргументы, не важно какие*/});
var myPanel = Ext.create('Ext.form.Panel', {/*аргументы, не важно какие*/});
если мы посмотрим на их родителей то увидим вот такую иерархию для первого:
Ext.Base
Ext.AbstractComponent
Ext.Component
Ext.container.AbstractContainer
Ext.container.Container
Ext.panel.AbstractPanel
Ext.panel.Panel
Ext.panel.Table
Ext.grid.Panel
и вот такую для второго:
Ext.Base
Ext.AbstractComponent
Ext.Component
Ext.container.AbstractContainer
Ext.container.Container
Ext.panel.AbstractPanel
Ext.panel.Panel
Ext.form.Panel
так вот, если мы запустим мою функцию:
is('Ext.panel.Table', myGrid); //вернет true, т.к. в иерархии есть этот класс
is('Ext.panel.Table', myPanel); //вернет false, т.к. в иерархии нет этого класса
is('Ext.panel.Panel', myGrid); //вернет true
is('Ext.panel.Panel', myPanel); //вернет true
вопрос в том, есть ли стандартная такая функция у extjs? чет я не найду))