Dynamically Instantiate a Function & Call a Method in JavaScript -
take javascript class:
var foo = function() { this.bar = function() { return 'foobar'; }; };
i can instantiate class , call it's bar
method this:
(new foo).bar();
i achieve instantiation , calling of class , it's method dynamically based of string represents class , method foo@bar
.
i have tries following achieve receive error uncaught typeerror: string not function
:
var action = 'foo@bar'; var classmethod = action.split('@'); (new classmethod[0]).call(classmethod[1]);
is possible in javascript or going in wrong way?
you eval. won't show because eval evil.
if willing create object containing types can created:
var foo = function() { this.bar = function() { return 'foobar'; }; }; var types = { foo : foo }; var action = 'foo@bar'; var classmethod = action.split('@'); (new types[classmethod[0]])[classmethod[1]]();
the problem code classmethod[0]
string. use new
need give function. in code make use of javascript's []
operators accesses properties of object using string containing property's name. first use foo property types object. constructor. after calling constructor, use []
operators again bar property.
Comments
Post a Comment