rpsep2
rpsep2

Reputation: 3111

Check JS function when its stored in a variable with arguments

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

Answers (2)

gurvinder372
gurvinder372

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

Rayon
Rayon

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

Related Questions