Javascript的call,apply,bind
2017-05-26 本文已影响0人
吴博
总结
- 三者都是用来改变函数的this对象的指向的
- 三者的第1个参数都是this要指向的对象,也就是想指定的上下文
- 三者都可以利用后续参数传参
- bind是返回函数,以便于稍后调用;apply,call则是立即调用。
- call的调用方式:对象.call(this,arg1,arg2);
- apply的调用方式:对象.apply(this,[arg1,arg2,arg3]);
- func.bind(this); 多次bind无效,只会根据第一次bind的上下文(this)来执行函数
代码示例:
var a = {
x : 'a',
get:function(){
var args = Array.prototype.slice.call(arguments);
args.unshift(this.x);
console.log.apply(console,args);
}
}
var b = {
x : 'b'
};
a.get(); // a
a.get.call(b); // b
a.get.apply(b,[1,2,3]); // b 1 2 3
a.get.call(b,1,2,3); // b 1 2 3
a.get.bind(b,1,2,3)(); // b 1 2 3