函数声明的this
- 函数声明式的this,由调用对象决定
- 若直接调用fn(),则this是window
- 若fn()由对象obj调用(obj.fn()),则this是对象obj
let f2= ()=>console.log(this)
f2()//this是window 因为f2是在全局作用域里声明的
let o ={
f2:f2,
test:function(){
//若fn是函数声明式定义的 那么下方调用fn() this是window
function fn(){
console.log(this)//this是window
}
fn()
}
}
o.f2()//this是window
o.test()//this是对象o
箭头函数的this
箭头函数中的this在函数创建时就已确定,它由外层函数(作用域)中的this来决定,外层的this是谁,它的this就是谁
let f2= ()=>console.log(this)
f2()//this是window 因为f2是在全局作用域里声明的
let o ={
f2:f2,
test:function(){
//fn是箭头函数定义的 则下方调用fn() this就由外层作用域决定 this是对象o
let fn = ()=>console.log(this)//this是对象o
fn()
}
}
o.f2()//this是window
o.test()//this是对象o