私はこのようなものを持っています...
define(['ClassA', 'ClassB', 'ClassC'],
function(ClassA, ClassB, ClassC)
{
return {
build: function(className) {
var obj;
switch(className)
{
case 'ClassA': obj = new ClassA(); break;
case 'ClassB': obj = new ClassB(); break;
case 'ClassC': obj = new ClassC(); break;
}
return obj;
}
}
}
これは問題ないように思えますが、より良い書き方はありますか? スイッチを次のように交換してみました
return new arguments[className](); // doesn't work
私が得ることができる最も近いのは、マップを使用することです:
var classes = {
ClassA: ClassA,
ClassB: ClassB,
ClassC: ClassC
}
return new classes[className]();
より良い方法はありますか?