3

我知道 PHP 有call_user_func,我只是想知道 JavaScript 是否有类似的东西,我想调用的方法在哪里,例如:object.set$fieldID($fieldValue)

我宁愿不通过 if/else/switch 块来正确执行一行代码。

如果有帮助,我正在使用 jQuery。

4

2 回答 2

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

以上内容的一些阅读材料:MDC上的成员运营商

一些高级方法包括Function.prototype.callFunction.prototype.apply。第一个在某种程度上等同于 PHP call_user_func(),而后者在某种程度上等同于 PHP 的call_user_func_array().

PHP 的函数和 JavaScript 的区别在于 JavaScript 允许您在另一个对象的上下文中调用某个对象的方法。这是通过使用 and 的第一个参数来完成call()apply()

上面示例的等价物,但使用call()andapply()看起来像这样:

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

第一个参数必须是,否则在浏览器的情况下,object该方法将使用this绑定到全局对象的指针执行。window

于 2009-07-29T09:48:47.077 回答
4

@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']();
于 2009-07-29T09:55:34.957 回答