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();
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With