Function.prototype.bindの、複数の引数を配列で渡せるバージョンを作ってみました。
Function.prototype.bindApplyという拡張メソッドがそれです。
また、この拡張メソッドを使わずに自前でやる方法(getBoundFuncByMySelf)も書きました。
(注意:ECMAScript 5 に準拠したWebブラウザが必要です)
地味に便利だと思います ^o^
Object.defineProperty(
Function.prototype,
'bindApply',
{
value : function( thisObject, argumentsArray ) {
return Function.prototype.bind.apply(this, [thisObject].concat(argumentsArray));
},
writable : false,
enumerable : false,
configurable : false
}
);
function getBoundFuncByBindApply(obj, func, argv) {
return func.bindApply(obj, argv);
}
function getBoundFuncByMySelf(obj, func, argv) {
return Function.prototype.bind.apply(func, [obj].concat(argv));
}
function showThis(arg1, arg2){
alert(this + arg1 + arg2);
}
var foo = getBoundFuncByBindApply("Thisです:", showThis, [" Foo "," Boo "]); // どちらでもOK
var foo = getBoundFuncByMySelf("Thisです:", showThis, [" Foo "," Boo "]); // どちらでもOK
foo();