开发者

create object from dynamic classname - ReflectionClass in JS?

is 开发者_如何学编程it possible to do something like this without evil eval:

var str='MyClass';
eval('new '+str);

i just learned that there's ReflectionClass in PHP... thanks.


You could try this:

var str = "MyClass";
var obj = new window[str];

Here's an example:

function MyClass() {
   console.log("constructor invoked");
}

var s = "MyClass";
new window[s]; //logs "constructor invoked"


Create object (invoke constructor) via reflection:

SomeClass = function(arg1, arg2) {
    // ...
}

ReflectUtil.newInstance('SomeClass', 5, 7);

and implementation:

/**
 * @param strClass:
 *          class name
 * @param optionals:
 *          constructor arguments
 */
ReflectUtil.newInstance = function(strClass) {
    var args = Array.prototype.slice.call(arguments, 1);
    var clsClass = eval(strClass);
    function F() {
        return clsClass.apply(this, args);
    }
    F.prototype = clsClass.prototype;
    return new F();
};
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜