函数调用中常见到call apply bind,我们来简单阐述一下三种函数方法;
这三种方法一般用来指定this的环境
call
1.call方法:function.call(this,参数1,参数2),第一个参数为function运行时制定的this值,若不传默认为undefined或者null,在非严格模式下自动指向全局对象
2.apply方法与call方法相似:function.apply(this, [argsArray]),与call方法的区别是在于提供参数的方式,apply 使用参数数组而不是一组参数列表
3.bind方法
bind方法与apply方法,call方法的区别是call和apply都是改变上下文中的this并立即执行这个函数,bind方法新创建一个函数,然后把它的上下文绑定到bind()括号中的参数上,然后将它返回,可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加
如下:
var a = {
fn:function(e,d,f){
console.log(e,d,f);
}
}
var b = a.fn;
b.call(a,10);//10
b.apply(a,[8,9]);//8,9
var c = b.bind(a,10);c(1,2);//10,1,2