public lvl:number = 6;
constructor(public navCtrl: NavController) {
console.log('Start Page Constructor');
setTimeout(function(){
for(var i=0;i<4;i++){
console.log(this.lvl);
}
}, 5000);
}
我希望日志为:
6
6
6
6
6
但我得到了:
undefined
undefined
undefined
undefined
undefined
我不明白我在这里做错了什么。
答案 0 :(得分:2)
因为当您使用this
语法进行回调时,function () {}
会发生更改。使用arrow functions获取正确的this
:
setTimeout(() => {
for(var i=0;i<4;i++){
console.log(this.lvl);
}
}, 5000);
答案 1 :(得分:0)
我认为您的this
绑定在setTimeout中运行。你试过像这样绑定这个函数吗?
setTimeout(function () { ... }.bind(this), 5000)