js ECMAScript5中,bind()方法传入不同参数的使用分析

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var b = '1';
var c = '2';
var d = '3';

function atest(b, c, d) {
var a = 100;
console.log(a);
console.log(b);
console.log(c);
console.log(d);
}
var btest = atest;
var ctest = atest.bind(this);
var dtest = atest.bind(this, 40, 50);
atest(); // 100 undefine un un
btest(4, 5, 6); // 100 4 5 6
ctest(4, 5, 6); // 100 4 5 6
dtest(4, 5, 6); // 100 40 50 4

bind()与call()、apply()都是用来在特定的作用域中调用函数,不同在于,bind()返回的是个新函数,而call()、apply()会立即执行。

bind()中除了绑定作用域,含有参数的相应解释为:

bind()的另一个最简单的用法是使一个函数拥有预设的初始参数。这些参数(如果有的话)作为bind()的第二个参数跟在this(或其他对象)后面,之后它们会被插入到目标函数的参数列表的开始位置,传递给绑定函数的参数会跟在它们的后面。

Tips:
apply()需要传入参数数组
call()需要传入对应参数

参考文章

Function.prototype.bind()