gpt4 book ai didi

Coffeescript 计时器和 'this' 回调指针

转载 作者:行者123 更新时间:2023-12-04 13:54:58 25 4
gpt4 key购买 nike

我对浏览器认为“this”的内容有疑问。在下面的示例中,在 abc 上调用 pingMe() 将等待 1 秒,然后浏览器会说 Object DOMWindow has no method 'func'。它没有将“this”解析为类 ABC (abc) 的实例,而是解析为 DOMWindow,就好像没有涉及该对象一样。我显然不明白 setTimeout 如何在回调范围内工作。有什么建议可以让这个回调成功吗?

class ABC
@func = null

constructor: (func) ->
@func = func

pingMe: ->
setTimeout(doPing, 1000)

doPing = ->
@func()

abc = new ABC ->
alert "HI"
abc.pingMe()

最佳答案

我得到了这个代码工作。

class ABC
@func = null

constructor: (func) ->
@func = func

pingMe: ->
setTimeout =>
@doPing()
, 1000

doPing: ->
@func()

abc = new ABC ->
alert "HI"
abc.pingMe()

您的 doPing 方法已定义 doPing = -> ,而其他人都使用 name: -> ,我是这样改的。 pingMe使用 =>创建一个未命名的函数,和 @doPing绑定(bind) this到功能。

不确定这是否正确,我很少使用 JavaScript。但我希望它能给你一个进一步研究的方向。

关于Coffeescript 计时器和 'this' 回调指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917567/

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