Dri*_*bel 10 javascript dynamic
如何基于变量类型字符串(包含对象的名称)在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;
}
}
Run Code Online (Sandbox Code Playgroud)
并定义了我的工具:
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);
}
Run Code Online (Sandbox Code Playgroud)
我想得到(不断增长的)开关声明,似乎'错了'.
use*_*716 18
function getTool(name){
return ( typeof window[name] === 'function' ) ?
new window[name]() : {/*some default*/};
}
Run Code Online (Sandbox Code Playgroud)
假设PointerTool构造函数在全局window命名空间中定义.将其替换为您正在使用的任何名称空间.
你应该考虑重新思考你的方法.最好是拥有像Tools对象一样的东西,它可以将工具作为属性,比如
Tools = {"SelectTool": SelectTool /* etc */}`.
Run Code Online (Sandbox Code Playgroud)
这样,您就可以访问new Tools.SelectTool和new Tools[var_with_tool_name].
| 归档时间: |
|
| 查看次数: |
7807 次 |
| 最近记录: |