Tôi gặp sự cố với những gì trình duyệt xem là 'this'. Trong ví dụ sau, gọi pingMe() trên abc sẽ đợi 1 giây và sau đó trình duyệt sẽ nói rằng Object DOMWindow không có phương thức 'func'. Thay vì giải quyết 'this' thành thể hiện của lớp ABC (abc), nó thay vào đó giải quyết thành DOMWindow, như thể đối tượng không liên quan. Tôi rõ ràng không hiểu cách setTimeout hoạt động liên quan đến phạm vi gọi lại. Bất kỳ đề xuất làm thế nào tôi có thể thực hiện cuộc gọi lại này thành công?Bộ đếm giờ Coffeescript và con trỏ 'this' này trên gọi lại
class ABC
@func = null
constructor: (func) ->
@func = func
pingMe: ->
setTimeout(doPing, 1000)
doPing = ->
@func()
abc = new ABC ->
alert "HI"
abc.pingMe()
hm, thay đổi dòng setTimeout thành 'obj = this; setTimeout ((-> obj.doPing()), 1000) 'và khai báo doPing tới' doPing: -> 'dường như sửa chữa nó. Dường như CoffeeScript giữ hành vi JavaScript thông thường trong các trường hợp này. – Larry