this指向问题
this指向其调用者
注意this声明位置与调用位置
// 声明位置
var me={
name:'lizzy',
hello: function(){
console.log(`Hello, my name is ${this.name}`);
}
}
var you = {
name:'zzjwd',
hello: function(){
var targetFunc = me.hello;
targetFunc();
}
}
var name = 'global';
// 调用位置
you.hello();
targetFunc是用var定义的全局变量,所以它的调用者是window。
以下3种函数的this指向window
- 立即执行函数
- setTimeout中传入的函数
- setInterval中传入的函数
箭头函数的this指向书写它时父作用域的this上
var a=1;
var obj={
a:2,
func2: ()=>{
console.log(this.a)
},
func3: function(){
console.log(this.a)
}
}
//func1
var func1 = ()=>{
console.log(this.a)
}
var func2 = obj.func2;
var func3 = obj.func3;
func1();
func2();
func3();
obj.func2();
obj.func3();

浙公网安备 33010602011771号