打字稿:为什么'这个'关键字返回' Window&#39 ;?

时间:2016-03-16 16:51:31

标签: typescript

为什么this关键字返回Window但没有课程项?

public setfunc() {
        setTimeout(function test() {
        console.log(this);
    }, 1000);
}

Typescript playground example

1 个答案:

答案 0 :(得分:1)

与JavaScript一样,this具有高度的内容性。

当您运行计时器时,没有任何对象或元素作为事件回调的目标,因此您将获得全局window范围。

您可以使用箭头功能在创建回调时维护范围:

setTimeout(() => {
        console.log(this);
    }, 1000);
}

或手动处理......

var _x = this;
setTimeout(function test() {
        console.log(_x);
    }, 1000);
}