Function.prototype.bind = function(){
// 将传进来的参数类数组转化为数组,这样就可以用到Array中的方法了
const args = Array.prototype.slice.call(arguments)
// 获取数组第一项,即传入的this,并剔除
// t保存的是第一项this的值
// args是剔除第一项之后的所有参数
const t= args.shift()
// 这里的self(this)指的是实例化对象本身
// 根据函数原型链,每一个函数__proto__都会指向Function.prototype
// 所以这里的this指的是新创建的方法本身,因为害怕this指向改变,所以用变量承接
const self = this
return function () {
return self.apply(t, args)
}
}
如何手写bind函数
最新推荐文章于 2022-03-25 00:13:36 发布