构建

时间:2016-01-27 03:05:42

标签: javascript function class coffeescript

我有一个按钮类,我希望能够在创建时将一个函数传递给它。该类的代码在这里:

class Button extends PIXI.Sprite
    constructor: (image, @f) -> 
        super()
        console.log("Button built!");
        @.texture = PIXI.Texture.fromImage(image);


    isClicked = false;

    setClicked: -> 
        isClicked = true; 
        console.log(isClicked);

    doThing: ->
        if isClicked
            isClicked = false;
            f();
        else
            isClicked = false;

构造代码是:

for = function(){
    console.log("foo");
}

bar = new Button('bar.png', foo);

f()在构造函数期间存在,但是稍后调用doThing()时,f()为空。我不认为这是范围的事情,因为我已经尝试在构造函数之外直接应用foo()并且它不起作用。或者,对于我想要做的事情,是否有更好的模式? (可以创建附加到通过websocket将代码激发到服务器的函数的按钮,但是稍后会发生这种情况)

1 个答案:

答案 0 :(得分:0)

秘密是在我的函数调用f()中包含@ / this。我不知道为什么。有人可以解释一下吗?

doThing: ->
    if isClicked
        isClicked = false;
        @f();
    else
        isClicked = false;