Javascript – How to turn a String into a JavaScript function call?


I got a string like:

settings.functionName + '(' + + ')';

that I want to translate into a function call like so:


This of course will have to be done in JavaScript. When I do an alert on settings.functionName + '(' + + ')'; it seems to get everything correct. I just need to call the function that it would translate into.


settings.functionName = clickedOnItem = IdofParent

Best Solution

Seeing as I hate eval, and I am not alone:

var fn = window[settings.functionName];
if(typeof fn === 'function') {

Edit: In reply to @Mahan's comment: In this particular case, settings.functionName would be "clickedOnItem". This would, at runtime translate var fn = window[settings.functionName]; into var fn = window["clickedOnItem"], which would obtain a reference to function clickedOnItem (nodeId) {}. Once we have a reference to a function inside a variable, we can call this function by "calling the variable", i.e. fn(, which equals clickedOnItem(, which was what the OP wanted.

More full example:

/* Somewhere: */
window.settings = {
  /* [..] Other settings */
  functionName: 'clickedOnItem'
  /* , [..] More settings */

/* Later */
function clickedOnItem (nodeId) {
  /* Some cool event handling code here */

/* Even later */
var fn = window[settings.functionName]; 
/* note that settings.functionName could also be written
   as window.settings.functionName. In this case, we use the fact that window
   is the implied scope of global variables. */
if(typeof fn === 'function') {