在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);
);
}
所以我问,有没有办法避免直接这种微观管理?我想有一种方法可以制作某种类型的例子,所以类实例总是对自己有一些参考(它可以有任何名称,比如那个)。
答案 0 :(得分:1)
使用箭头功能。形成规范:
使用function关键字的函数表达式引入了一个新的动态绑定 this , 而箭头函数表达式保留其封闭上下文的 this 。 箭头函数表达式对于编写回调特别有用,否则通常会出现回调 有一个未定义或意外的这个。
board.bindMouse((event: JQueryEventObject) => {
if(this.focus) this.focus.move(event);
});