JavaScript(NodeJS)中是否有与PHP的call_user_func_arrayhttp://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(" ");
}

10-05 20:37
查看更多