this 指向问题
var a = 1
function fn1() {
console.log(this.a)
}
const fn2 = () => {
console.log(this.a)
}
const obj = {
a: 10,
fn1: fn1,
fn2: fn2
}
fn1()
fn2()
obj.fn1()
obj.fn2()
箭头函数中的 this 始终指向其父级作用域中的 this。换句话说,箭头函数会捕获其所在的上下文的 this 值,作为自己的 this 值。在箭头函数中调用 this 时,仅仅是简单的沿着作用域链向上寻找,找到最近的一个 this 拿来使用,它与调用时的上下文无关。
fn1()中,this 指向 window,所以打印 1 fn2()中,fn2 是一个箭头函数,this 指向作用域链上最近的 this,这里为 window,所以打印 1. obj.fn1()中,fn1 是一个普通函数,this 指向 obj,即 obj.a。所以打印 10。 obj.fn2()中,fn2 是一个箭头函数,this 会继承父级作用域中的 this,为 window。所以打印 1. 本题最终结果:1 、1、10、1