箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。
具体看实例:
//以前:谁调用的这个函数 this就指向谁
// console.log(this);//window
// function fn(){
// console.log(this);//window 因为这个函数也是window调用的 window.fn();
// }
// fn();
// //对象方法的this
// const obj = {
// name:'andy',
// sayHi:function(){
// console.log(this);//obj
// }
// };
// obj.sayHi();
// //箭头函数的this 上一层作用域的this指向
// const fn = () => {
// console.log(this);//window
// }
// fn();
// //对象方法的箭头函数的this
// const obj = {
// uname:'aa',
// sayHi:() => {
// console.log(this);//this指向window
// }
// }
// obj.sayHi();//window;
//因为箭头函数没有this 所以在箭头函数里面查找this
//会找到上一级 而是window调用obj的 ——> window.obj
const obj = {
uname:'pink老师',
sayHi:function(){
console.log(this);//obj
let i = 10;
const count = () =>{
console.log(this);//obj
/*
因为箭头函数没有this指向 所以会找上一级的thi指向
而sayHi这个函数是普通函数 谁调用它它就指向谁
所以sayHi的this指向是obj obj.sayHi();
所以count箭头函数的指向也为bj
*/
}
count();
}
}
obj.sayHi();