vue中使用定时器时this指向问题
今天在项目中遇见了一个定时器的问题,报this.$router.对象是undefined,查找了一下原因,是this指向问题:
- 箭头函数中的this指向是固定不变(定义函数时的指向),在vue中指向vue
- 普通函数中的this指向是变化的(使用函数时的指向),谁调用的指向谁
案例
setTimeout(()=>{ //this指向的是vue
this.$router.push({ path: '/home' })
},2000)
setTimeout(function(){ //this指向的是window 因为setTimeout是window对象的函数
this.$router.push({ path: '/home' })
},2000)