我有这样的东西...
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;
}
}
}
这看起来不错,但有没有更好的方法来编写它?我尝试将 switch 替换为
return new arguments[className](); // doesn't work
我能得到的最接近的是使用地图:
var classes = {
ClassA: ClassA,
ClassB: ClassB,
ClassC: ClassC
}
return new classes[className]();
有没有更好的办法?