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._printObjectthisはFooクラスのインスタンスを指してしまっている。

これを直すためにアロー関数が存在する。
上記のコードを直すには以下のようにする。

class Hoge{
	sampleMethod = () => {
		this._printObject();
	}	
	
	_printObject(){
	
	}
}
 
class Foo{
	FooMethod(callback){
		callback();
	}
}
 
var hoge = Hoge();
var foo = Foo();
 
foo.FooMethod(hoge.sampleMethod);
//これはエラー