gpt4 book ai didi

javascript - 使用 javascript 绑定(bind)函数时的参数占位符

转载 作者:行者123 更新时间:2023-12-01 17:41:00 25 4
gpt4 key购买 nike

我可以使用 bind() 来绑定(bind)函数和参数。

例如,outputTwo() 需要两个参数。我用一个参数绑定(bind)它,然后我只需要在调用时将一个参数传递给它。看起来像:

<script>
function outputTwo(param1, param2) {
console.log(param1, param2);
}
var boundOutput = outputTwo.bind(null, "what"); // the first param should be an object, to replace <this> object in function, which not needed in our question
boundOutput("the heck?");
</script>

它将输出What the heck?

问题是:我能否将第二个参数绑定(bind)到 outputTwo()绑定(bind)第一个参数?

在C++中,有一种叫做placeholders的东西。当我需要绑定(bind) param2 而不绑定(bind) param1 时,我需要将一个 placeholder 传递给 param1,如下所示:

auto boundOutput = std::bind(outputTwo, std::placeholders_1, "the heck?");
boundOutput("what");

它将输出 What the heck?。 javascript 中有这样的东西吗?

编辑:我正在写一个浏览器扩展,我需要绑定(bind)的函数是我写的,但由浏览器调用。所以我无法更改参数的类型。

最佳答案

你可以,但它不会那么好:

const bindLast = (fn, this, ...lastArgs) =>
(...firstArgs) => fn.call(this, [...firstArgs, ...lastArgs]);

如果你想让它成为函数对象的方法,你可以用 Function.prototype 做一些类似的事情,我通常不喜欢这样做。

用法:

const outputFirst = bindLast(outputTwo, null, "world");
outputFirst("hello"); // "hello world"

关于javascript - 使用 javascript 绑定(bind)函数时的参数占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338357/

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