我知道PHP有call_user_func
,但我想知道JavaScript是否有类似的东西,例如要调用的方法是:object.set$fieldID($fieldValue)
我不想只为了执行一行代码而去使用if/else/switch语句块。
如果有帮助的话,我在使用jQuery。
我知道PHP有call_user_func
,但我想知道JavaScript是否有类似的东西,例如要调用的方法是:object.set$fieldID($fieldValue)
我不想只为了执行一行代码而去使用if/else/switch语句块。
如果有帮助的话,我在使用jQuery。
object["set" + $fieldID]($fieldValue);
一些高级方法包括 Function.prototype.call
和 Function.prototype.apply
。前者在某种程度上相当于 PHP 的 call_user_func()
,而后者在某种程度上相当于 PHP 的 call_user_func_array()
。
PHP 函数和 JavaScript 的区别在于,JavaScript 允许您在另一个对象的上下文中调用某个对象的方法。这是通过 call()
和 apply()
的第一个参数来实现的。
使用 call()
和 apply()
的相当于上面例子的代码如下:
object["set" + $fieldID].call(object, $fieldValue);
object["set" + $fieldID].apply(object, [$fieldValue]);
@lonut 是正确的。但更普遍的情况是,如果你想调用不属于显式对象(如全局)的函数,你可以在 window
对象上调用它们:
var foo = function() { alert(1); };
window['foo']();
由于所有对象都包含在window
中,下面是另一个示例:
var object = function() { this.method = function() { alert(2); }; }
var instance = new object();
window['instance']['method']();
window
或类似于 this['foo']();
(当全局对象不命名为 window
时)来调用全局函数是有用的。+1 - Ionuț G. Stan