当我运行此代码时:
class Dog
constructor: ()->
@dog_name = "tulio"
the_bird = new Bird()
the_bird.bird_sing(@the_method)
@say_name()
the_method: ()->
@dog_name = "james"
say_name: ()->
alert @dog_name
class Bird
bird_sing: (callback)->
callback()
the_dog = new Dog()
为什么警报会说“tulio”而不是“james”? 显然回调不知道这个(@) 我怎么能得到“詹姆斯”?
答案 0 :(得分:2)
因为the_method
是回调,所以它需要绑定到这个上下文:
the_method: ()=>
@dog_name = "james"
或者它需要在呼叫上绑定
the_bird.bird_sing => @the_method(args...)