Понимаю, что заголовок не информативен, но не могу придумать ничего короткого и конкретного. Наверно это где-то описывалось, но я и ключевые слова не могу выдумать, чтобы искать. Подскажите, вот в админке допустим стандартно запускается. Вот допустим создается функция MODx.form.Handler Вот она расширена через Ext.extend и передается в Ext.reg. Это все еще же функция, используемая в качестве конструктора. Но вот мы видим, что почему-то мы обращамеся к объекту MODx.form.Handler.errorExt(a.result,frm) так, будто где-то вызвано MODx.form.Handler = Ext.ComponentMgr.create({xtype: "test-form-handler"}); Но где это происходит и как? UPD Вот здесь все случается Ext.onReady(function() { MODx.util.JSONReader = MODx.load({ xtype: 'modx-json-reader' }); MODx.form.Handler = MODx.load({ xtype: 'modx-form-handler' }); MODx.msg = MODx.load({ xtype: 'modx-msg' }); }); MODx.load передает аргументы в Ext.ComponentMgr.create, как и писал выше. В php многое из этого бы наверно делалось бы статичными методами, но не смотрел подробно эти объекты, не уверен…
Вообще ничего не ясно ни из заголовка, ни из топика. Выкладывай свои коды, описывай задачи, чем ты не доволен и там уже будем посмотреть. А так гадание какое-то получается.
Вот в админке создается MODx.form.Handler через Ext.reg('modx-form-handler',MODx.form.Handler); Он функция. т.е. если мы там заменим строку на Ext.reg('modx-form-handler',MODx.form.Handler); console.log('typeof MODx.form.Handler: ', typeof MODx.form.Handler); // вернет ес-но typeof MODx.form.Handler: function Но если мы тут воткнем ,submit: function(close) { console.log('typeof MODx.form.Handler: ', typeof MODx.form.Handler); // вернет объект! // бла-бла-бла То увидим, что у нас есть объект MODx.form.Handler с методом — функцией MODx.form.Handler.errorExt и другими полезными штуками. Вот когда функция стала объектом?
Вот в админке создается MODx.form.Handler через Ext.reg('modx-form-handler',MODx.form.Handler); вернее происходит ленивое создание объекта что-ли, или как это называется. Регистрирует xtype modx-form-handler. MODx.form.Handler — функция конструктора. Но она где-то превращается в объект и мы можем в любом месте вызвать хэндлер ошибки, например. Как это делается, хочу скопировать.
Ну так понятно, что. Ext.reg не создает объекта. Тут ничего удивительного. Но если console.log('typeof MODx.form.Handler: ', typeof MODx.form.Handler); показывает, что у нас объект, значит где-то же он создается, правда? И я не мог найти где именно и как. Но я нашел, от здеся Ext.onReady(function() { MODx.util.JSONReader = MODx.load({ xtype: 'modx-json-reader' }); MODx.form.Handler = MODx.load({ xtype: 'modx-form-handler' }); MODx.msg = MODx.load({ xtype: 'modx-msg' }); }); MODx.load собственно передает аргументы в Ext.ComponentMgr.create, как я и писал в заглавном посте.
Ну вот, нашел. Теперь вся цепочка выстроилась?
Ну вот и здорово.