如何基于可变类型字符串(包含对象名称)在javascript中创建新对象?
现在我有了:(随着更多工具的到来,列表将更长……)
function getTool(name){
switch(name){
case "SelectTool":
return new SelectTool();
break;
case "LineTool":
return new LineTool();
break;
case "BlurTool":
return new BlurTool();
break;
case "PointerTool":
default:
return new PointerTool();
break;
}
}
并定义了我的工具,例如:
PointerTool.prototype = new Tool;
PointerTool.prototype.constructor = PointerTool;
function PointerTool(){
this.name = "PointerTool";
}
PointerTool.prototype.click = function(x, y){
info("You clicked at: "+x+", "+y);
}
我想了解(增长中的)switch语句,这似乎是“错误的”。
最佳答案
function getTool(name){
return ( typeof window[name] === 'function' ) ?
new window[name]() : {/*some default*/};
}
假定在全局
PointerTool
命名空间中定义了window
构造函数。将其替换为您使用的任何 namespace 。