Function.prototype.bind = function (context) {
//第0位是this,所以得从第一位开始裁剪
var args = Array.prototype.slice.call(arguments, 1);
var fn = this;
return function () {
//二次调用我们也抓取arguments对象
var params = Array.prototype.slice.call(arguments);
//注意concat的顺序
fn.apply(context, args.concat(params));
};
};
var obj = {
z: 1
};
function fn(x, y) {
console.log(x + y + this.z);
};
var bound = fn.bind(obj, 1);
bound(2); //4