如何在 Underscore 的 `_.wrap` 函数中使用原始参数

How to use original parameter in `_.wrap` function in Underscore

比如我有一个example函数,它有两个参数ab

var example = function(a, b){...}

现在我想包装这个函数,对参数 b 做一些更改,我怎样才能在我的包装函数中得到 a

example = _.wrap(example, function(original)){
    //do some changes to b
    ....
    original(?, b)//how can i get a
}

您将获得原始参数作为包装函数的参数,其顺序与在原始函数参数之后传递的顺序相同。

在下面的示例中,ab 将是传递给 hello 函数的 2 个参数。

var hello = function(p1, p2) {
  return p1 + ": " + p2;
};
hello = _.wrap(hello, function(func, a, b) {
  return "before, " + func(a, b + 'Name') + ", after";
});
snippet.log(hello('hellow', 'User'));
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>