2011-08-15 161 views
5

我真的不知道爲什麼我沒有從)的CoffeeScript/JavaScript變量範圍

class C 
    constructor:() -> 
    @date = new Date() 

    f:() -> 
    $(document).keydown((e) -> 
     alert(@date) 
    ) 
莫非

在CF(定義匿名函數的情況下訪問@date(this.date)變量有人對此有何評論?

回答

9

這是因爲在​​事件處理程序中,this值不會引用您的對象,所以會引用DOM元素。

爲了這個目的,你可以使用=>(在fat arrow),將處理程序的this值綁定到父this

class C 
    constructor:() -> 
    @date = new Date() 

    f:() -> 
    $(document).keydown((e) => 
     alert(@date) 
    )