gpt4 book ai didi

javascript - 如何将 "this"传递给 setTimeout 回调?

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

fiddle

代码:

<button onclick="this.disabled=true; setTimeout(function(){this.disabled=false;},500);">click</button>

this 似乎指的是窗口而不是按钮。如何传递按钮对象以便重新启用它?

我知道变通办法...我可以给按钮一个 ID,然后再次抓取它,但我很想知道我是否可以通过某种方式将 this 传入。

最佳答案

this 是由函数的调用方式定义的。

foo.someFunc(); /* this is foo */
foo.bar.someFunc(); /* this is bar */
window.someFunc(); /* this is window */
someFunc(); /* this is window because window is the default */
setTimeout(foo.bar.someFunc, 500); /* this is window because you've passed a function and disassociated it from foo.bar */

如果你想在函数之间传递它,你必须将它复制到不同的变量。

<button onclick="this.disabled=true; var that = this; setTimeout(function(){that.disabled=false;},500);">click</button>

关于javascript - 如何将 "this"传递给 setTimeout 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258574/

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