JavaScript(NodeJS)等价于PHP的call_user_func_array()

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内的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(" "); }