JSでのアロー関数について
概要
JSではアロー関数を使用するとその関数が記述されたオブジェクトにその関数(インスタンス)が紐付けされる。
_sampleMethod = () => {
...
}その真価
このアロー関数の真価は、コールバック内でクラスメソッドを使用した時である。
例えば以下のコードはエラーとなる
class Hoge{
sampleMethod(){
this._printObject();
}
_printObject(){
}
}
class Foo{
FooMethod(callback){
callback();
}
}
var hoge = Hoge();
var foo = Foo();
foo.FooMethod(hoge.sampleMethod);
//これはエラーこれは、thisがつけられたコードが呼び出される時、そのメソッドが呼び出された場所にthisが依存してしまうからである。
だから、sampleMethod内のthis._printObjectのthisはFooクラスのインスタンスを指してしまっている。
これを直すためにアロー関数が存在する。
上記のコードを直すには以下のようにする。
class Hoge{
sampleMethod = () => {
this._printObject();
}
_printObject(){
}
}
class Foo{
FooMethod(callback){
callback();
}
}
var hoge = Hoge();
var foo = Foo();
foo.FooMethod(hoge.sampleMethod);
//これはエラー