bind函数模拟封装
bind的函数:创建一个新的函数,在bind()被调用时,这个新函数的this被指定为bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
作用:call()、apply()和bind()函数都可以改变当前函数this指向;区别于call()和apply()不会立即执行该函数,传参方式和call()方法一样
1.初步模拟改变this指向:
(function(){
let obj={
name:'XX',
age:18
}
function A(n1,n2){
console.log(this.name,n1,n2);
this.say='hello';
}
// 模拟封装bind函数0--myBind()
Function.prototype.myBind=function(tarObj){
let args=[].slice.call(arguments,1);
// 保存当前绑定的函数
let self=this;// --A
// 处理绑定参数的函数
function AA(){
// 收集参数:
let _args=args.concat(Array.from(arguments));
// 执行绑定的函数
self.apply(tarObj,_args);
};
// 返回当前函数的处理函数