个人觉得是:上级调用的对象
let user = {
name:'zhouxin',
fn:function(){
console.log(this) //user调用的fn,所以指向user
console.log(this.name) //zhouxin
}
}
user.fn()
function getUser(){
let name = 'zhouxin';
console.log(this) //window
console.log(this.name) //undefined
}
getUser()
var o = {
a:10,
b:{
a:12,
fn:function(){
console.log(this); //b
console.log(this.a); //12
}
}
}
o.b.fn();
var o = {
a:10,
b:{
// a:12,
fn:function(){
console.log(this.a); //undefined
}
}
}
o.b.fn();
几个例子下来估计你已经悟了。
不过下面这个可是纠结死我了
var o = {
a:10,
b:{
a:12,
fn:function(){
console.log(this.a); //undefined
console.log(this); //window
}
}
}
var j = o.b.fn;
j();
window.j(),没毛病,可不也是window.o.b.fn()吗?
箭头函数的this是定义是所处的环境,不是调用所处的环境,而上面是调用处的环境
Vue3木有this