this取什么值,不是在函数定义的时候确定,而是在函数执行的时候确定
一、作为普通函数
function a () {
console.log(this)
}
a() // window
二、使用call、apply、bind
a.apply({x: 100}) // {x: 100}
let b
a.call(b) // b
const c = a.bind([1,2,3])
c() // [1,2,3]
三、作为对象方法被调用
this是setTimeout函数的this,作为普通函数一样执行
四、在class方法中调用
五、箭头函数
this的取值是取上级作用域的this