我知道这可以使用基本闭包,但我想看看如何用.bind()来更好地理解这个函数方法。请参阅此示例代码:
function add (a, b) {
return a + b;
}
var addTwo = multiply.bind(this, 2);
addTwo(10); // returns 12
这似乎工作正常。但是,是否可以使用.bind()来做同样的事情,但是将第二个参数设置为固定值,同时保持第一个参数不变?
我尝试了以下内容:
function add (a, b) {
return a + b;
}
var addThree = multiply.bind(this, null, 3);
addThree(10); // returns 10, presumably because null + 10 === 10
有没有办法选择要设置哪些参数以及使用.bind()留下哪些参数?
答案 0 :(得分:3)
_.partial
确实通过_
作为占位符来实现此目的,即addThree = _.partial(multiply, _, 3)
; its implementation涉及跟踪部分占位符的位置。虽然它是一个很好的阅读,它确实涉及一个库。它目前是最接近JS中位置参数绑定的东西。
答案 1 :(得分:2)
答案 2 :(得分:2)
毕竟,JavaScript中的任何值(例如null
,undefined
,......)都可以用作函数的参数。为了做这样的事情,你需要类似于C ++ 11 std::placeholders
的东西。