普通函数中的this, 谁调用就指向谁
箭头函数中的this,是父级作用域的this,而不是调用者
箭头函数中的this永远指向父级作用域的this,无法通过apply/call/bind来修改
例子1:
因为没有将箭头函数放置于一个新的函数中,所以箭头函数属于全局作用域
只有定义一个新的函数,才会开启一个新的作用域
let obj = {
name: 'Mike',
say: function(){
console.log(this);
},
h1: ()=>{
console.log(this);
}
}
obj.say();
obj.h1();
输出结果:
例子2
function Person(){
this.name = 'Mike';
this.say=function(){
console.log(this);
}
this.hi=()=>{
console.log(this);
}
}
let obj = new Person();
obj.say();
obj.hi();
输出结果:
例子3
function Person(){
this.name = 'Mike';
this.hi=()=>{
console.log(this.name);
}
}
let obj = new Person();
obj.hi();
obj.hi.call({name: "Amy"});
输出结果: