function bindFn (...args) {
let context = args.shift() // 第一个参数为绑定的this
if (!context) throw new Error('no "this" object')
return (...rest) => {
// 这里的this指的是当前调用该方法的函数对象
this.apply(context, [...args, ...rest])
}
}
let testObj = {
value: 5
}
let testFn = function (a, b, c) {
console.log(this.value, a, b, c)
}
testFn.bindFn = bindFn
testFn = testFn.bindFn(testObj, 666, 888)
testFn(999) // 5 666 888 999
ES6实现bind函数
最新推荐文章于 2024-05-08 09:51:49 发布