我遇到浏览器认为"这个"的问题.在下面的示例中,在abc上调用pingMe()将等待1秒,然后浏览器将说Object DOMWindow没有方法'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()
Run Code Online (Sandbox Code Playgroud)
Rei*_*cke 10
我得到了这段代码.
class ABC
@func = null
constructor: (func) ->
@func = func
pingMe: ->
setTimeout =>
@doPing()
, 1000
doPing: ->
@func()
abc = new ABC ->
alert "HI"
abc.pingMe()
Run Code Online (Sandbox Code Playgroud)
您的doPing方法已定义doPing = ->,而其他人都使用name: ->,我改变了这种方式.pingMe用于=>创建一个未命名的函数,并@doPing绑定this到该函数.
不确定这是否正确,我很少使用JavaScript.但我希望它可以给你一个进一步观察的方向.
| 归档时间: |
|
| 查看次数: |
6493 次 |
| 最近记录: |