一句话归纳综合就是:
箭头函数的this与建立时的关闭词法上下文的this保持一致。正确一点说应当是,箭头函数没有本身的this以及arguments,所能取到的this是它被建立时的关闭词法上下文。这时候会构成一个闭包,箭头函数将其词法作用域内的this记录在scope属性上。箭头函数运用call,apply,bind通报作用域会被疏忽, 然则能够用来通报参数,此时第一个参数应当设置为null。以下为实例:
const foo = ((...rest) => { console.log(this) })
let foo1 = foo.bind({demo: 1}, 'demo')
// window
foo1()
function Foo() {
// Foo 实例
console.log(this)
this.obj = {
// window
foo: foo,
// obj
bar() { console.log(this) },
// Foo实例
zoo: () => { console.log(this) },
callF() { this.foo(), this.bar(), this.zoo() }
}
}
let demo = new Foo()
demo.obj.callF()