这是由于setTimeout函数调用的代码运行在与所在函数完全分离的执行环境上,这会使得this指向的是window对象。,在vue中使用setTimeout在function中直接使用this无效。正确的使用方法是:
1.在外部给this定义暂存
data(){
return{
message:"这是一条消息"
}
},
methods: {
func(){
var _this = this; //定义_this暂存this
setTimeout(function(){
console.log(_this.message);
},"500");
}
}
2.使用箭头函数
data(){
return{
message:"这是一条消息"
}
},
methods: {
func(){
setTimeout(()=>{
console.log(this.message);
},"500");
},
}