Мне нужно иметь возможность создавать экземпляр объекта класса в Dojo во время выполнения и смешивать его с другим объектом (что-то вроде указания extends
или implements
в Java, но во время выполнения). и я придумал следующее решение:
var declaredClassBackup = this.declaredClass; // backup the "declaredClass"
var mixinObject = null;
try {
dojo.require(kwArgs.mixinClassName);
/*
* Eval the mixinClassName variable to get the Function reference,
* then call it as a constructor with our mixinSettings
*/
mixinObject = new (eval(kwArgs.mixinClassName))(kwArgs.mixinSettings);
} catch (e){
if(console){
console.error("%s could not be loaded as a mixin.",
kwArgs.mixinClassName);
}
mixinObject = new package.path.DefaultMixin(kwArgs.mixinSettings);
}
dojo.mixin(this, mixinObject);
/*
* Re-set the declaredClass name back to that of this class.
*/
this.declaredClass = declaredClassBackup;
Что может пойти не так с этим типом кода, если что? (Как бы вы сделали его более надежным?) Кроме того, есть ли что-то, что я мог бы просто пропустить в додзё, что сделало бы это для меня более изящно?