bind()
最简单的用法是创建一个函数,使这个函数不论怎么调用都有同样的this值。
语法:fun.bind(this,arg1,arg2,….)
Bind()方法会创建一个新的函数,称为绑定函数,fun方法在this环境下调用。
该方法会传入两个参数,第一个参数作为this,第二个及以后的参数则作为函数的参数调用。
this.a = 1;
2 var module = {
3 a: 2,
4 getA:function() {
5 return this.a;
6 }
7 };
8 module.getA();//2
9
10var getA1 = module.getA;
11// getA在外部调用,此时的this指向了全局对象
12getA1();//1
13
14// 再把getA1方法绑定到module环境上
15var getA2 = getA1.bind(module);
16getA2();
从上面的例子可以看出,为什么要创建绑定函数,就是当我们调用某些函数的时候是要在特定环境下才能调用到,所以我们就要把函数放在特定环境下,就是使用bind把函数绑定到特定的所需的环境下。
2.让函数拥有预设的参数
使用bind()方法使函数拥有预设的初始参数,这些参数会排在最前面,传给绑定函数的参数会跟在它们后面
1 function list(){
2 // 让类数组arguments拥有数组的方法slice,这个函数实现了简单把类数组转换成数组
3 returnArray.prototype.slice.call(arguments);
4 }
5
6 list(1,2,3);//[1,2,3]
7
8 //给list绑定一个预设参数4
9 var list1 = list.bind(undefined,4);
10
11 list1();//[4]
12 list1(1,2,3);//[4,1,2,3]