Sogrey / Web-QA

https://sogrey.github.io/Web-QA/
MIT License
6 stars 2 forks source link

实现一个bind函数 #322

Open Sogrey opened 3 years ago

Sogrey commented 3 years ago
// 思路:类似call,但返回的是函数
Function.prototype.mybind = function (context) {
  if (typeof this !== 'function') {
    throw new TypeError('Error')
  }
  let _this = this
  let arg = [...arguments].slice(1)
  return function F() {
    // 处理函数使用new的情况
    if (this instanceof F) {
      return new _this(...arg, ...arguments)
    } else {
      return _this.apply(context, arg.concat(...arguments))
    }
  }
}

Function.prototype.bind 的用途是什么? #257 举一些ES6对Function函数类型做的常用升级优化? #219 jQuery的事件委托方法bind 、live、delegate、on之间有什么区别?#83