背景: 今天面试面到了,说不能使用apply和call来实现,当时脑袋空空,就放弃了,西八
Function.prototype.myBind=function(self,...prePendArgs){
// 在目标this对象上将当前函数添加上去,并且调用它
let fn = Symbol('fn');
self[fn] = this;
return function(...args){
let finalArgs =[...prePendArgs,...args]
return self[fn](finalArgs);
}
}
let obj1 = {
name: '1',
sayHi(target) {
console.log('hi', target, this.name)
}
}
obj1.sayHi()
let obj2 = {
name: '2'
}
let bindFn = obj1.sayHi.myBind(obj2,'默认小马')
bindFn()
bindFn('非小马')