bind的具体使用
bind方法主要是将函数绑定到某个对象,bind()会创建一个函数,函数体内的this会指向传入bind()的第一个参数的值。
例如fn.bind(obj)其实和obj.fn()效果是一样的。
直接上代码:
function func(a,b){
console.log(`这里的this是${this};参数一是${a},参数二是${b},这是个${this.ace}`);
}
let func2 = func.bind({ace:'lily'},"ace","bob");
func2();
let func3 = func.bind(this,"ace,bob");
func3();
手写bind
在理解了bind()具体实现了一个什么功能之后,我们就可以开始写了。
Function.prototype.bind1 = function(){
//首先需要处理参数-将参数转换为数组
const args = Array.prototype.slice.call(arguments);
//获取this-数组第一项
const t = args.shift();
//fn.bind() 的fn
const self = this;
//返回一个函数
return function(){
self.apply(t,args);
}
}