一句話歸納就是: 箭頭函數的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()