一句话归纳就是: 箭头函数的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()