手写bind函数

88 阅读1分钟
// 实现bind
Function.prototype._bind = function (newThis, ...bRet) {
  // 原来函数的this,这里是fn
  let oldThis = this
  return function (...rRet) {
    return oldThis.apply(newThis, [...bRet, ...rRet])
  }
}
function fn() {
  console.log(this) // fn
  console.log(arguments) // Arguments(4) [1, 2, 4, 6, callee: ƒ, Symbol(Symbol.iterator): ƒ]
}
// 如果传null,则不改变this的指向
let newFn = fn._bind(null, 1, 2);
newFn(4, 6)