在函数上使用.bind()并将一些参数设置为常量,而不是其他参数,JavaScript

时间:2015-11-12 21:40:38

标签: javascript

我知道这可以使用基本闭包,但我想看看如何用.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()留下哪些参数?

3 个答案:

答案 0 :(得分:3)

_.partial确实通过_作为占位符来实现此目的,即addThree = _.partial(multiply, _, 3); its implementation涉及跟踪部分占位符的位置。虽然它是一个很好的阅读,它确实涉及一个库。它目前是最接近JS中位置参数绑定的东西。

答案 1 :(得分:2)

根据documentation,否:

  

bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并使用前面的给定参数序列调用新函数时提供的任何内容。

强调我的。)

答案 2 :(得分:2)

No.ES6中都没有。

毕竟,JavaScript中的任何值(例如nullundefined,......)都可以用作函数的参数。为了做这样的事情,你需要类似于C ++ 11 std::placeholders的东西。