在运行时确定的对象类型 - Javascript(ExtJS)

时间:2009-08-01 15:07:33

标签: javascript dynamic extjs object

这可能是不可能的(或者可能很容易死!)所以这里是......

我希望能够创建依赖于变量集的类型的对象,而不需要大的switch语句。

我认为在PHP中可以做类似的事情......

$objectType = "myNewClass";
$newObject = new $objectType();

其中$ newObject变量将保存Class“myNewClass”的实例。

这是(或任何类似的技术)使用Javascript吗?

由于 斯图尔特

3 个答案:

答案 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 + "()");