第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;
};