Hello,
I was wondering how can I call a function by using the value of a variable name?
i.e.
var str = "function_name";
// call 'function_name' by using its 'str' alias
Thanks.
Hello,
I was wondering how can I call a function by using the value of a variable name?
i.e.
var str = "function_name";
// call 'function_name' by using its 'str' alias
Thanks.
You will need to assign the function to a named property of an object. For example
var somObj = {};
function foo(){}
someObj.foo = foo;
someObj.bar = function(){}
//then
someObj[str](arg1, arg2 ...)
Also, if the function was declared in the global scope, it’s automatically a property of the window object. So you can do windowstr
If these aren’t possible, then you need to use eval(). Try hard not to use it.
Thanks for that
Thanks for the tips. I was searching for info about how to do this a month or two ago and found very little information. I did find out how to do it using the window object as you mentioned.
As for your code, would it be something like this?:
//then
someObj[foo](arg1, arg2 …)
The someObj[str](arg1, arg2 …) throws me because I don’t know where the str comes from.
I am nothing more than a beginner at Javascript. Bear with me.
With that example the value of str would be either ‘foo’ or ‘bar’ depending on which of the two functions you are running.
Thanks for that, Felgall, I had the same question as cheesedude.
…and to make sure I “got it” right, we are using the [bracket] notation instead of .dot notation in order to list the args?
Well, using brackets to access the property. The value of the property in our case happens to be a function.
var someObj = {};
someObj.hi = function(name) {
alert("hi, " + name);
}
someObj.bye = function(name) {
alert("bye, " + name);
}
var str = "hi";
someObj[str]("Stomme poes");
var str = "bye";
someObj[str]("Stomme poes");
//you can even
var str = "hi";
var theFunction = someObj[str];
theFunction("Stomme poes");
Thanks for the clarification, crmalibu. This is interesting to know. And it is very hard to find on the internet. I don’t know why this info is so hard to find. But it is.
Now we know.