出典: http://ejohn.org/apps/learn/#2
Function.prototype.bind = function(){
var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift();
return function(){
return fn.apply(object,
args.concat(Array.prototype.slice.call(arguments)));
};
};
なぜ2番目のリターンが必要なのか(fn.applyの前)誰か教えてもらえますか?
また、args.concat が必要な理由を説明できる人はいますか? 次のように書き直さないのはなぜですか。
fn.apply(object, args)
それ以外の
return fn.apply(object,
args.concat(Array.prototype.slice.call(arguments)));