Reputation: 3111
I currently store a function in a variable, and then call it:
var function_name = 'test_function';
// some other JS here
if (typeof app[function_name] != 'undefined') {
app[function_name];
}
app.test_function = function() {
alert('woo');
};
This works fine, but what if I store arguments in the function name variable? Like this:
var function_name = 'test_function("mike")';
// some other JS here
if (typeof app[function_name] != 'undefined') {
app[function_name];
}
app.test_function = function(name) {
alert(name);
};
This doesn't work, because typeof app[function_name]
is undefined.
How can I do this?
Upvotes: 0
Views: 39
Reputation: 68393
'test_function("mike")'
is not a valid function name.
Your logic needs to change to
var function_name = 'test_function("mike")';
var app = {};
app.test_function = function(name)
{
console.log(name)
};
var split = function_name.split(/[()]/);
var funName = split[0];
var arguments = [];
if (funName != function_name)
{
var arguments = split[1].split(",");
}
if (typeof app[funName] != 'undefined')
{
app[funName].apply(null, arguments);
}
Upvotes: 1
Reputation: 36609
function
name should/will not change but the definition
will!
var function_name = 'test_function';
var app = {};
if (typeof app[function_name] != 'undefined') {
app[function_name];
}
app.test_function = function(name) {
alert(name);
};
app.test_function('Hey');
Upvotes: 1