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

第2引数以降で指定したメソッド名(第1引数のkeyにある名前)を第1引数「Object」をthisとしてBindする関数。

■使用例

var buttonView = {
  label  : "underscore",
  onClick: function(){ console.log("clicked: " + this.label); },
  onHover: function(){ console.log("hovering: " + this.label); }
};
var re = _.bindAll(buttonView, "onClick", "onHover");

// console に「clicked: underscore」が出力される。
re.onClick();

// console に「hovering: underscore」が出力される。
re.onHover();

■内部構造

  _.bindAll = function(obj) {
    var i, length = arguments.length, key;
    
// arguments が1以下なら
    if (length <= 1) throw new Error( "bindAll must be passed function names" );
    
// 第1引数「Object」のメソッドに this ( 第1引数自身 )を設定するforループ。
    for (i = 1; i < length; i++) {
      key = arguments[i];
      obj[key] = _.bind(obj[key], obj);
    }
    
// 第1引数「Object」を返す。
    return obj;
  };

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