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()
浙公网安备 33010602011771号