【问题标题】:Breaking out json as function parameters and sending to function [duplicate]将json分解为函数参数并发送到函数[重复]
【发布时间】:2016-04-04 13:41:37
【问题描述】:

我有一个 JSON 格式的字符串,它告诉我要调用的函数及其参数的信息,我正试图弄清楚如何将这些参数发送到函数。

var obj = JSON.parse("{'jFunc':'UpdateStat', 'args':['health','100']}")

var fn = window[obj.jFunc];
if(typeof fn == 'function'){
  fn();  // how do I pass the args correctly here, in order
}

function UpdateStat(statName, statValue){
}

请注意,可以有任意数量的参数。在这个例子中,我知道我可以传递 args[0] 和 args[1] 但这只是一个通用过程的例子,我们不知道可能存在的 args 的数量。

我也不想传递 args 数组并让函数句柄将其分解。我希望调用的最终函数尽可能正常,以免担心这些细节。

【问题讨论】:

  • 您已经将数组设为obj.args,您应该可以按照链接问题中的说明使用它。
  • 仅供参考:在您的示例中,这不是有效的 JSON,并且缺少结束 }
  • 将代码从欺骗应用到您的示例:fn.apply(this, obj.args)
  • @epascarello 如果我们真的很挑剔,"' 也应该全部颠倒,因为键名应该用 " 包围:)
  • @JamesThorpe 废话,我没有看到,那不会解析。哈哈咖啡还没有开始。

标签: javascript


【解决方案1】:

你可以使用 Function.prototype.apply():

window[obj.jFunc].apply(this, obj.args);

参见文档here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 2013-07-01
    • 2021-06-04
    相关资源
    最近更新 更多