2014-03-12 58 views
0

在javascript中我可以用選擇保存到功能範圍的_this,或綁定功能,這個直接(Function.bind或underscorejs綁定UTILITES)。「這」在打字稿類實例

但打字稿應該更面向對象,而且我期待打字稿中的這個指向類實例。但它的確如JS一樣工作。所以我必須用建築

export class Mouse { 
     private board : Presentation.View.Board; 
     private focus : Presentation.View.Element = null; 
     constructor(board:Presentation.View.Board){ 
      var _this = this; 
      board.bindMouse(
       function(event:JQueryEventObject){ 
        if(_this.focus) _this.focus.move(event); 
       } 
      ); 
     } 

export class Mouse { 
     private board : Presentation.View.Board; 
     private focus : Presentation.View.Element = null; 
     constructor(board:Presentation.View.Board){ 
      var _this = this; 
      board.bindMouse(
       _.bind(function(event:JQueryEventObject){ 
        if(this.focus) this.focus.move(event); 
       }, this); 
      ); 
     } 

那麼請問,有什麼方法可以避免直接微觀?我想有一種方法可以做出某種壯舉,所以類實例總是有一些參考(它可以有任何名稱,如)。

回答

1

使用箭頭功能。形成規格:

使用函數關鍵字的函數表達式引入了一種新動態綁定, 而箭頭函數表達式保留其包圍上下文。 箭頭函數表達式對於編寫回調特別有用,否則這些回調通常會帶有未定義的或意外的

board.bindMouse((event: JQueryEventObject) => { 
     if(this.focus) this.focus.move(event); 
}); 
+0

我真的不喜歡這個C型語法,但看起來像它只是很好的選擇。 – setec

+0

這很奇怪,因爲我瞭解大多數開發人員喜歡箭頭語法。 –