const v = new Vue({
el: '#root',
data() {
console.log(this) //指向vue实例对象
return {
name:'kk'
}
}
fun:()=>{
console.log(this); //window
}
})
首先是我的认知,new创建对象时this指向实例对象。再是正常函数this指向调用该方法的对象,箭头函数的this指向声明函数时this的指向。
所以:
1.data中的this为什么不是指向参数对象而是指向vue实例对象?
2.fun中的this为什么不是指向vue实例对象而是指向window?
再附上一个结构相同的构造函数及其输出结果,以供参考:
function Person(obj) {
this.obj = obj;
}
const p = new Person({
fun1: () => {
console.log(this); ///window
},
fun2() {
console.log(this); //参数obj对象
}
});
console.log(p.obj.fun1()) //window
console.log(p.obj.fun2()) //参数对象
其中fun1中的结果与上例一致都是指向window,fun2中的结果与我预想的一致但与上例不一致。
求高人指点迷津!