实现一个bind函数

40 阅读1分钟

1、简单版

Function.prototype.bind = function (obj, arg) {
  arg = Array.prototype.slice.call(arguments, 1);
  var self = this;
  return function (newArg) {
    arg = arg.concat(Array.prototype.slice.call(newArg));
    return self.apply(obj, arg);
  };
}

2、完整版

Function.prototype.bind = function (obj, arg) {
  arg = Array.prototype.slice.call(arguments, 1);
  var self = this;
  var bound = function (newArg) {
    arg = arg.concat(Array.prototype.slice.call(newArg));
    return self.apply(obj, arg);
  };
  var F = function () { };
  F.prototype = self.prototype;
  bound.prototype = new F();
  return bound;
}