在traverse
NPM包有這個例子如何更改ES6箭頭函數的「this」指向的內容?
var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
traverse(obj).forEach(function (x) {
if (x < 0) this.update(x + 128);
});
裏面的回調函數可以調用this.update
。我知道在這種情況下,您應該使用常規(不是ES6箭頭)風格的函數定義,如上所示。
但出於好奇,你會如何使用ES6的箭頭函數語法的代碼工作?如果我嘗試如下,我得到TypeError: Cannot read property 'update' of undefined
,因爲當然this
是不一樣的上面。
traverse(obj).forEach((x) => {
if (x < 0) this.update(x + 128);
});
我嘗試用bind
改變this
,但沒有成功。如何在ES6箭頭功能中更改this
?