JavaScript(NodeJS)等价于PHP';s调用用户函数数组()

JavaScript(NodeJS)等价于PHP';s调用用户函数数组(),javascript,php,node.js,Javascript,Php,Node.js,JavaScript(NodeJS)中是否有类似于PHP的 调用用户函数数组()。它允许使用参数数组调用函数 在我的例子中,我必须使用数组中的参数调用util.format 这里有一个非常简单的例子试图说明这一点 var util = require("util"); function my_fundtion(items) { var format_string = ""; for (var i=0; i < items.length; i++) { format_str

JavaScript(NodeJS)中是否有类似于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 */);
}
var util=require(“util”);
功能我的基金(项目){
var format_string=“”;
对于(变量i=0;i
PHP有:

call_user_func_array('myfunc', array(1, 2, "foo", false));
而JS有:

myfunc.apply(null, [1, 2, "foo", false]);
第一个
null
位于对象的位置。如果函数打算成为一种方法,那么您将使用它。使用这种调用的一个例子是切片类似数组的对象,这些对象根本不是数组,但看起来像一个数组(如函数中的
参数
对象):

一般来说,语法是:

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

因为
call\u user\u func\u数组
调用字符串中函数名引用的函数。因此,在JS中,我们需要使用
eval

例如:

const popup = (msg) => {
 alert(msg);
}

const subject = {
 popup(msg) {
  alert(msg);
 }
}
所以


纠正我。如果我错了

在您的示例中,您的意思是:对于(var i=0;imyFunction.apply(object或null,args)
@thiswayup否,它将获得与数组项相同数量的占位符。BTW,
格式\u字符串
将始终empty@LuisMasuelli更正了,谢谢!myfunction.apply()有帮助。是的,要使用array.join(),忘记了:)
function my_fundtion(items) {
    return items.join(" ");
}
const popup = (msg) => {
 alert(msg);
}

const subject = {
 popup(msg) {
  alert(msg);
 }
}
eval("popup").apply(null, ['hi'])
eval("subject.popup").apply(null, ['hi'])