Наследование модуля dojo при создании экземпляра в другом классе
Учитывая следующее:
Родитель имеет ParentsModule:
define([ParentsModule,...],
function(ParentsModule,...) {
return declare("Parent", ..., {
someFunction: function(arg) {
var a = new ParentsModule();
a.doThis(arg);
},
...
)};
});
Ребенок расширяет Родителя. Имеет ChildsModule
define([ChildsModule,Parent,...],
function(ChildsModule,Parent,... ) {
return declare("Child", [Parent], {
someFunction: function(arg) {
this.inherited(arguments);
},
...
)};
});
ParentsModule делает свое дело.
define([ParentsModule,...],
function(ParentsModule,... ) {
return declare("ChildsModule", [ParentsModule], {
doThis: function(arg) {
//bunch of stuff happens here.
},
...
)};
});
ChildsModule расширяет ParentsModule.
define([...],
function(...) {
return declare("ParentsModule",..., {
doThis: function(arg) {
return;
},
...
)};
});
Без редактирования "Родитель" можно a.doThis(arg);
вызов ChildsModule.doThis()
вместо?
Могу ли я переопределить модуль, который создается в функции родителя?
В Parent.someFunction есть много кода, который я хотел бы использовать. Parent (и ParentsModule) - это класс, предоставленный мне, и я являюсь автором Child (и ChildsModule).
1 ответ
Как насчет переопределения загрузки ParentsModule и загрузки ChildsModule? Конечно, это относится ко всему коду, который пытается создать экземпляр ParentsModule - не уверен, является ли это проблемой или нет.
var dojoConfig = { paths: { 'orig_code/ParentsModule': 'new_code/ChildsModule' } };
Если вы не знакомы с dojoConfig; он должен быть размещен где-то перед загрузкой dojo. Если он у вас уже есть, просто добавьте к нему объект paths.