gpt4 book ai didi

Javascript:绑定(bind)参数,但保留原始参数?

转载 作者:行者123 更新时间:2023-11-29 19:21:04 25 4
gpt4 key购买 nike

我想在 JavaScript 中为事件监听器的回调注入(inject)一些值,但保留原始事件对象。这可能吗?

示例(#1):

function callback(event, arg) {
console.log(event);
console.log(arg);
}

var something = 2;

element.addEventListener(
"click",
callback.bind(element, ???, something)
);

如何在绑定(bind)其他参数的同时保留原始 event 对象?

我知道我能做到(#2):

element.addEventListener(
"click",
function (event) {
callback(event, something);
}
);

甚至这个(#3):

element.addEventListener(
"click",
function (event) {
callback(event, this);
}.bind(something)
);

但#2 使代码更难看,因为我需要在异步调用中使用变量 something,而它可能在点击时已被更改。

#3 偷了这个,我可能需要那个。

我是否遗漏了什么和/或我对绑定(bind)的理解是否正确?

最佳答案

您可以通过改变参数的顺序来“柯里化(Currying)”您想要的参数:

function callback(arg, event) {
console.log(event);
console.log(arg);
}

var something = 2;
element.addEventListener("click", callback.bind(null, something));

通过这种方式,您可以将“绑定(bind)”或部分应用作为回调传递,并且仍然会收到一个 Event 对象。有关详细信息,请参阅 "Partial Functions" MDN 的部分 Function.prototype.bind文档。

关于Javascript:绑定(bind)参数,但保留原始参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33027414/

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