我正在研究Kyle的辛普森着作“你不了解JS:这个和对象原型”的代码,并坚持代码示例,如下所示。
在执行var bar = foo.bind(null, 2);
代码后,任何人都可以解释条形变量如何将“a”参数保存为2并保存该保存参数的位置,以及为什么在bar(3);
代码执行时不会覆盖参数?
function foo(a, b) {
console.log(a, b);
console.log("a:" + a + ", b:" + b);
}
foo.apply(null, [1, 10]);
var bar = foo.bind(null, 2);
bar(3);
答案 0 :(得分:0)
您还可以在1st(this)参数之后添加额外的参数 bind会将这些值传递给原始函数。任何 您稍后传递给绑定函数的其他参数将是 在绑定参数之后传入。
所以在你的例子中:
function foo(a, b) {
console.log(a, b);
console.log("a:" + a + ", b:" + b);
}
var bar = foo.bind(null, 2);
这里我们只在this
引用参数之后传递了一个参数,而且是a
。如果你这样称呼它:
bar();// here a is 2 and b is undefined(no parameter passed).
bar(3);// a is 2 and b is 3
bar(3);
相当于:
foo.bind(null, 2, 3);
bar();