js中bind方法的实现

这也是函数柯里化的一种方法
ES3实现

Function.prototype.bind = function (_this,args) {
    var self = this,
          oldargs= arguments;
    
    return function () {
        var args = [];
        for(var i = 1; i < oldargs.length; i++){
            args.push(oldargs[i])
        }
        for(var i = 0; i < arguments.length; i++){
            args.push(arguments[i])
        }
        return self.apply(_this, args)
    }
}

ES6 实现

Function.prototype.bind = function (context, ...args) {
  const _this = this
  return function() {
    return _this.apply(context,args)
  }
}

你可能感兴趣的:(js中bind方法的实现)