[javascript] Q.ECMAScript5 bind()

A.
ECMAScript5では、bind() というメソッドで関数のthisの値を変更できます。
var x = 1;
var y = 2;

// 1. bind
// 第一引数はthisの値を設定します。
function test1(y) {
  console.log( this );
  console.log( arguments );
  console.log( this.x + y );
}
test1(10); // 11
var a1 = { x:5 };
var b1 = test1.bind(a1);
b1(10); // 15

// 2. bind
// 第二引数以降は引数が順番にアサインされます
var goukei = function(x, y, z) {
  console.log( this );
  console.log( arguments );
  console.log( x + y + z);
}
goukei(1, 2, 3); // 6
var b2 = goukei.bind(null, 1, 2);
b2(3); // 6
var b3 = goukei.bind(null, 1, 2, 10);
b3(); // 13

js_bind_01.png

参考サイト:
MDN bind