What's a more secure alternative for eval() when I just want to call a function?

eval, javascript

Solution

object["set" + $fieldID]($fieldValue);

Some reading material for the above: Member Operators on MDC.

Some advanced methods include `Function.prototype.call` and `Function.prototype.apply`. The first is somehow equivalent to PHP's `call_user_func()` while the latter is somehow equivalent to PHP's `call_user_func_array()`.

The difference between PHP's functions and JavaScript's is that JavaScript allows you to call methods of some object in the context of another object. This is done through the use of the first argument of `call()` and `apply()`.

An equivalent for the above example, but using `call()` and `apply()` looks like this:

object["set" + $fieldID].call(object, $fieldValue);
object["set" + $fieldID].apply(object, [$fieldValue]);

The first argument must be `object` otherwise the method will be executed with the `this` pointer bound to the global object, `window` in the case of browsers.

Problem

I know PHP has `call_user_func`, I was just wondering if JavaScript had something similar, where the method I want to call is, for example: `object.set$fieldID($fieldValue)` I would rather not go through if/else/switch blocks just to execute one line of code properly. If it helps, I am using jQuery.

Original source