相关疑难解决方法(0)

在jquery回调中调用时,TypeScript"this"作用域问题

我不确定在TypeScript中处理"this"范围的最佳方法.

这是我转换为TypeScript的代码中常见模式的示例:

class DemonstrateScopingProblems {
    private status = "blah";
    public run() {
        alert(this.status);
    }
}

var thisTest = new DemonstrateScopingProblems();
// works as expected, displays "blah":
thisTest.run(); 
// doesn't work; this is scoped to be the document so this.status is undefined:
$(document).ready(thisTest.run); 
Run Code Online (Sandbox Code Playgroud)

现在,我可以将呼叫改为......

$(document).ready(thisTest.run.bind(thisTest));
Run Code Online (Sandbox Code Playgroud)

......确实有效.但它有点可怕.这意味着代码可以在某些情况下编译和工作正常,但如果我们忘记绑定范围,它将会中断.

我想在类中做一个方法,这样在使用类时我们不需要担心"this"的作用范围.

有什么建议?

更新

另一种方法是使用胖箭头:

class DemonstrateScopingProblems {
    private status = "blah";

    public run = () => {
        alert(this.status);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一种有效的方法吗?

this typescript

105
推荐指数
3
解决办法
5万
查看次数

标签 统计

this ×1

typescript ×1