gpt4 book ai didi

javascript - Lua 的省略号在 JavaScript 中的等价物是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 05:55:03 24 4
gpt4 key购买 nike

在 Lua 中,这样的函数是有效的:

function FuncCallHack(Func, ...)
return Func(...)
end

有没有一种方法可以在 JavaScript 中执行此操作? ... 对那些不熟悉 Lua 的人来说意味着“所有未分组数组形式的未索引参数”。我在 JavaScript 中尝试过 ...,它似乎不起作用,而且由于 Google 不喜欢搜索特殊字符,所以它没有太大帮助。

最佳答案

JavaScript 有arguments 伪数组和apply 函数;你可以这样做:

function FuncCallHack(Func) {
return Func.apply(this, [].slice.call(arguments, 1));
}

这是它的工作原理:

  1. arguments - 这是一个伪数组,包含调用代码传递给函数的所有参数(包括格式参数 Func)。

  2. [].slice.call(arguments, 1) 是一种获取除第一个参数之外的所有参数的数组的方法。 (这是一个常见的习语。它通过将 Array#slice 方法应用于 arguments 伪数组,使用 Function#call [这是很像下面的 Function#apply,它只是接受 args 以不同的方式传递。)可悲的是,arguments 本身不一定有 slice 方法,因为它不是真正的数组。

  3. 然后我们使用 Function#apply 方法(所有 JavaScript 函数都有)调用 Func 使用相同的 this 值用于调用 FuncCallHack,并将除 Func 之外的所有参数传递给它。

您也可以稍微不同地定义它:

function FuncCallHack(Func, args) {
return Func.apply(this, args);
}

...仍然非常容易使用:

FuncCallHack(SomeFunction, [1, 2, 3]);
// Note this is an array --^-------^

关于javascript - Lua 的省略号在 JavaScript 中的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com