Function.prototype.bind()【関数生成】メソッド

メモ

  • 既存の関数を基に、関数を生成
  • 特定の this 値を設定可
  • 特定の引数を設定可

構文

  • bind ( thisArg [, arg1 [, arg2, …]] )

  • thisArg:関数内でthisで参照される値 (省略 または null:グローバルオブジェクト)
  • arg1~:引数

生成された関数

TypeError 例外:関数が呼び出し不可

// this.min ~ this.max の間の引数を合計
var func = function() {
  var sum = 0;
  for (var i = 0; i < arguments.length; i++) {
    if ((this.min <= arguments[i]) && (arguments[i] <= this.max)) {
      sum += arguments[i];
    }
  }
  return sum;
}

// 特定の this 値(範囲:10~30)を設定した関数を作成
var rangeA = { min:10, max:30 };
var funcA = func.bind(rangeA);
console.log(funcA(5, 15, 25, 35)); // 出力:40 (15 + 25)

// 特定の this 値(範囲:5~25)・特定の引数(10, 20)を設定した関数を作成
var rangeB = { min:5, max:25 };
var funcB = func.bind(rangeB, 10, 20);
console.log(funcB(5, 15, 25, 35)); // 出力:75 ((10 + 20) + 5 + 15 + 25)

// 例外
var funcNon;
var funcNG = funcNon.bind(null);   // TypeError 例外

関連