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