通过类回调Coffeescript类实例

时间:2014-10-31 00:45:30

标签: oop coffeescript instance

当我运行此代码时:

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”? 显然回调不知道这个(@) 我怎么能得到“詹姆斯”?

1 个答案:

答案 0 :(得分:2)

因为the_method是回调,所以它需要绑定到这个上下文:

http://jsfiddle.net/uaxrgrom/

the_method: ()=>
    @dog_name = "james"

或者它需要在呼叫上绑定

the_bird.bird_sing => @the_method(args...)