这可能是不可能的(或者可能很容易死!)所以这里是......
我希望能够创建依赖于变量集的类型的对象,而不需要大的switch语句。
我认为在PHP中可以做类似的事情......
$objectType = "myNewClass";
$newObject = new $objectType();
其中$ newObject变量将保存Class“myNewClass”的实例。
这是(或任何类似的技术)使用Javascript吗?
由于 斯图尔特
答案 0 :(得分:4)
如果构造函数在全局范围内定义,则可以通过括号表示法(window [fnName])访问它:
function ObjectType1(){ // example constructor function
this.type = 1;
}
var objectType = 'ObjectType1'; // string containing the constructor function name
var obj = new window[objectType](); // creating a new instance using the string
// variable to call the constructor
请参阅:Member Operators
答案 1 :(得分:1)
CMS的答案很好,但在EXT中你可能正在处理命名空间。
我创建了一个包含任何动态类的对象图:
// within a namespace:
var ns = {
Thinger: function(){}
};
// globals:
var Zinger = function(){}
// map:
var classes = {
zinger:Zinger,
thinger:ns.Thinger
};
var type = "thinger";
var myClass = new classes[type](props, type, etc);
答案 2 :(得分:-2)
应该可以使用eval():
var obj = eval("new " + objectType + "()");