js关于this的小技巧
这段时间,vue写的多了,习惯了es6的方式写函数,但是这种写法很容易导致this失效,比如刚刚发布的vue深度监听的问题,用了es6的写法,this就没法用,换回传统写法就可以了。
// es6写法,这样写this没法用,this成windows对象了
watch: {
data: {
handler: (newVal, oldVal) => {
console.log('data', newVal);
},
deep: true,
immediate: true
}
},
传统写法
// 传统写法
watch: {
data: {
handler: function(newVal, oldVal){
console.log('data', newVal);
},
deep: true,
immediate: true
}
},
经查资料获得因为这个时候watch使用的是=>,是箭头函数,那么这时候的this,其实是window对象,而不是当前vue 对象。