- Function.prototype.bind(obj) :
- 作用: 将函数内的this绑定为obj, 并将函数返回
- 面试题: 区别bind()与call()和apply()?
- 都能指定函数中的this
- call()/apply()是立即调用函数
- bind()是将函数返回
- 传入参数的形式:
call直接从第二个参数开始,依次传入
apply第二个参数必须是数组,传参放在数组里
bind的特点:绑定完this不会立即调用当前的函数,而是将函数返回,bind传参的方式同call一样
<script>
var obj={username:'kobe'}
function foo(data){
console.log(this,data);
}
// foo('测试');//window 测试
// foo.call(obj,'测试')//{username:'kobe'} 测试
// foo.call(obj,['测试'])//{username:'kobe'} ['测试']
// foo.apply(obj,'测试')//报错
//foo.apply(obj,['测试'])//{username:'kobe'} 测试
//var fun=foo.bind(obj,33);//不会立即调用当前的函数
//console.log(fun);//foo(data){console.log(this,data);}
//foo.bind(obj,33)();//{username:'kobe'} 33
setTimeout(function(){
console.log(this);//{username:'kobe'}
}.bind(obj),1000)
</script>
网友评论