众所周知:谁调用它,它就指向谁
const obj = {
name: "北京",
funOne: () => {
console.log(this.name);
},
funTwo() {
(() => {
console.log(this.name);
})();
}
}
obj.funOne(); // 输出空字符串: ""
obj.funTwo(); // 输出: 北京
解析一下:
在解读之前需要知道一个知识点:箭头函数内部没有 this,所以会指向上一级的this,所以在有关
this指向的题目中,完全可以去掉箭头函数来研究它的指向。
如下:
const obj = {
name: "北京",
funOne: () => {
console.log(this.name);
}
}
就可以写成
const obj = {
name: "北京",
funOne:this //此时这个this 就指向了上一级的 window
// 在全局中输入 window.name 会输出 ""
}
funTwo 也一样,去掉箭头函数后就等同于
const obj = {
name: "北京",
funTwo() {
this // 这里的 this 指向 obj,因为在普通函数中,谁调用它,它就指向谁
}
}