gpt4 book ai didi

javascript - 将参数传递给bind()时事件丢失

转载 作者:行者123 更新时间:2023-12-02 23:19:41 26 4
gpt4 key购买 nike

我尝试将回调事件绑定(bind),但在传递回调时丢失了事件。这是我的代码

HTML:

<button id="click">click</button>

JavaScript:

<script>
class T {
handler (e, c) {
console.log(e)
console.log(typeof c)
//c(e)
}

run () {
document.getElementById('click').addEventListener('click', this.handler.bind(this, e => {
console.log(e)
}))
}
}

(new T).run()
</script>

当我没有传递回调时,事件会被正确记录。代码在这里

handler (e) {
console.log(e)
}

run () {
document.getElementById('click').addEventListener('click', this.handler.bind(this))
}

现在,如何将事件回调传递给处理程序?

最佳答案

您将同时收到回调和事件。像这样修改你的代码,你会看到你的回调被调用。您的第一个参数是回调,第二个参数是事件。

class T {
listener (e, c) {
console.log(e);
console.log(typeof c);
e();
//c(e)
}

run () {
document.getElementById('click').addEventListener('click', this.listener.bind(this, e => {
console.log('I am called');
}));
}
}

(new T).run();
<button id="click">click</button>

您将看到回调被调用,并且您看到“我被调用”。但是,您应该修改参数以正确命名它们。 e,第一个参数看起来不像回调,第二个参数也类似。

关于javascript - 将参数传递给bind()时事件丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001288/

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