JavaScript(NodeJS)中是否有与PHP的call_user_func_array
(http://php.net/manual/en/function.call-user-func-array.php)类似的等效功能。允许调用带有参数数组的函数。
就我而言,我必须使用数组中的参数调用util.format
。
这是试图显示它的非常简单的示例。
var util = require("util");
function my_fundtion(items) {
var format_string = "";
for (var i=0; i < items.length; i++) {
format_string += " %s";
}
return util.format(format_string, /* here I want to pass items in items array */);
}
最佳答案
PHP具有:
call_user_func_array('myfunc', array(1, 2, "foo", false));
虽然JS具有:
myfunc.apply(null, [1, 2, "foo", false]);
第一个
null
放在对象的位置。如果该功能旨在用作方法,则将使用该功能。使用这种调用的一个示例是切片类似数组的对象,这些对象根本不是数组,而是看起来像一个对象(如函数内部的arguments
对象):Array.prototype.slice.apply(arguments, []);
一般来说,语法为:
(afunction).apply(obj|null, array of arguments)
您可以尝试以下方法:
function my_fundtion(items) {
var format_string = "";
for (var i=0; i < items.length; i++) {
format_string += " %s";
}
var new_items = items.slice();
new_items.unshift(format_string);
return util.format.apply(null, new_items);
}
恕我直言,这是功能的错误方法。您是否尝试过以下方法?
function my_fundtion(items) {
return items.join(" ");
}