this指向问题

1.这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象
let obj = {
a: 10,
b: {
a: 20,
fn: function () {
console.log(this); //this指上一级的调用,this指向b
console.log(this.a); //b有a则有值,无a则为undefind
}
}
}
// 第一种
obj.b.fn()

let obj = {
a: 10,
b: {
a: 20,
fn: function () {
console.log(this); //window
console.log(this.a); //则为undefind
}
}
}
// 第二种将fn赋值给变量fn1的时候并没有执行fn 所以最终指向的是window
let fn1 = obj.b.fn //obj.b.fn相当于只调用fn,则this指向window
fn1()

posted @ 2022-04-03 16:57  小白张先生  阅读(25)  评论(0)    收藏  举报