js中bind方法的实现

2018-04-06  本文已影响0人  枫树林

这也是函数柯里化的一种方法
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)
  }
}
上一篇 下一篇

猜你喜欢

热点阅读