function fn(a, b) {
console.log(a, b, this);
}
var magicFn = bind(fn, {});
magicFn(2, 3);
function bind(cb, context) {
console.log(arguments); // arguments[fn(a, b), {}]
return function() {
console.log(arguments); // arguments[2, 3]
cb.apply(context, arguments);
}
}