スニペット1で何が問題なのか教えてください。私のobj.discover()の出力は3です。this
をオブジェクトの矢印関数メソッドにバインドする方法はありますか?矢印機能が混乱している
'use strict'
// Snippet 1
var obj = {
data: 3,
discover:() => {
return this.data
}
}
obj.discover() // -> undefined
obj.discover.bind(obj)() // undefined
// but if I don't use the arrow notation, everything works
// Snippet 2
var obj2 = {
data: 3,
discover: function(){
return this.data
}
}
obj2.discover() // -> 3
Arrow関数は独自の 'this'を持っていません。そのために通常の関数を使用します。 –