bindとは何なのか?

fun.bind(arg);

bind() メソッドは、呼び出された時に新しい関数を生成します。最初の引数 thisArg は新しい関数の this キーワードにセットされます。2 個目以降の引数は、新しい関数より前に、ターゲット関数の引数として与えられます。

らしい。 ようはthisを設定できるというわけか。 bindしないとthisの参照が期待しない参照をする。

bindの処理が気になったのは下のようなコードが出てきたからだ。

this.arr.each(function(a){
    b.hoge(this.c);
}.bind(this));

このコードのbindを外すと(thisを束縛しないと)thisの参照がWindowになった。 なるほど、thisは呼び出し元によって変わってしまうのでそれを固定するためにbindを使うと。

jsのthisいっぱいあって難しい。