我有用作(基因敲除)訂閱處理程序ES6「箭頭」功能:「=>」函數是否會丟失上下文?
this.foo = 'test'
callback =() => console.log(this.foo)
bar.subscribe(callback);
根據MDN:
箭頭功能捕獲封閉的上下文的這個值
,所以我期望的是,當callback
被調用,它會記錄'test'
。它並沒有。當我把一個調試器,我可以看到this
實際上是一個ko.subscription
(這當然不具有foo
屬性)。
我可以通過手動綁定回調修復的東西:
callback = callback.bind(this)
,但我瞭解的事情,因爲我this
前應callback
曾經得到了subscribe
已綁定不應該是必要的。
是否有人可以解釋我不理解有關新=>
運營商,當它/不保留背景?
您是否在瀏覽器或Babel或..中直接使用ES6? – Matt
第一位代碼的上下文是什麼?喜歡,它在哪裏?在某個方法中? – Pointy
@Matt直接在瀏覽器中(我將使用Babel進行製作,但在Babel甚至涉及到之前,我在Chrome的開發環境中看到了這一點)。 – machineghost