在Typescript类实例中使用“This”

时间:2014-03-12 09:56:51

标签: javascript this typescript

在javascript中我可以使用 this 保存到功能范围 _this ,或者直接将绑定功能保存到 this (Function.bind或underscorejs bind utilites)。

但是打字稿应该更加面向对象,我希望打字稿中的 this 指向类实例。但它确实像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 个答案:

答案 0 :(得分:1)

使用箭头功能。形成规范:

  

使用function关键字的函数表达式引入了一个新的动态绑定 this ,   而箭头函数表达式保留其封闭上下文的 this 。   箭头函数表达式对于编写回调特别有用,否则通常会出现回调   有一个未定义或意外的这个

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