6

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!

2 Answers 2

15

You 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).

Sign up to request clarification or add additional context in comments.

3 Comments

Thank you! I knew I was missing something simple. I really thought I tried obj[funcName]() before but it is working for me now.
Do use eval with care though :) stackoverflow.com/questions/86513/…
See my comment on the security of using eval and other options without eval. Also, in addition to being insecure, eval can be very inefficient, especially when you do proper input validation, but even without validation you're calling the compiler every time you run it.
1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.