I think that I'm missing something very simple here. I want to pass a function an object and the method to call. The reasons why are too long for this post. :-)
var myObj = new someObject();
var funcName = "hide";
function callObject(myObj,funcName){
obj.hide(); //this works
obj[funcName]; //doesn't work
obj.eval(funcName); //doesn't work either.. tried many variations
}
Thank you!
I think that I'm missing something very simple here. I want to pass a function an object and the method to call. The reasons why are too long for this post. :-)
var myObj = new someObject();
var funcName = "hide";
function callObject(myObj,funcName){
obj.hide(); //this works
obj[funcName]; //doesn't work
obj.eval(funcName); //doesn't work either.. tried many variations
}
Thank you!
Share Improve this question asked Feb 25, 2011 at 1:56 DavidDavid 1152 silver badges8 bronze badges2 Answers
Reset to default 15You need the parenthesis on the call, like this:
obj[funcName]();
You can get eval to work like this:
eval("obj." + funcName + "()");
but there are many reasons not to do that (security, performance, harder debugging).
When dealing with obj[funcName]();
you have to take care of the instance of the object. if you want to use a private propetry form the object inside function call, it will use it as it was a static property.