compose() | Underscore JS 日本語リファレンス

引数に渡した複数の関数を後ろから実行して、結果を次に渡して実行。複数の関数を全部実行した結果を返す。

■使用例

var greet = function(name){ 
	return "hi: " + name;
};
var exclaim = function(statement){ 
	return statement.toUpperCase() + "!";
};
var welcome = _.compose( greet, exclaim );

// "hi: MOE!" 
console.log( welcome("moe") );

■内部構造

  _.compose = function() {

// 引数全部
    var args = arguments;

// 引数の数 - 1
    var start = args.length - 1;
    
// _.compose自体は関数を返す。
    return function() {
      var i = start;

// this.args[start]( 返される関数のarguments );(ブラウザなら window = this )
      var result = args[start].apply(this, arguments);

// 引数がなくなるまでの whileループ処理。グローバルオブジェクトをthisにして前の関数の結果を引数に関数処理を繰り返す。
      while (i--) result = args[i].call(this, result);
      return result;
    };
  };

このページのトップへ戻る