在JS中使用Curry函数

时间:2013-12-27 16:07:23

标签: javascript

Secrets of the JavaScript Ninja上工作时,我看到了curry函数。

Function.prototype.curry = function() {
    var fn = this, args = Array.prototype.slice.call(arguments);
    return function() {
      return fn.apply(this, args.concat(
        Array.prototype.slice.call(arguments)));
    };
  };

然后我尝试通过讨论split函数(通过Function.prototype.curry定义继承它)来使用它。

var splitIt = String.prototype.split.curry(/,\s*/); // split string into array
var results = splitIt("Mugan, Jin, Fuu");
console.log("results", results);    

[]打印出结果。为什么呢?

http://jsfiddle.net/2KCP8/

1 个答案:

答案 0 :(得分:3)

你的" splitIt"函数仍然期望this将引用要拆分的字符串。你没有安排在这里做到这一点。

尝试

var results = splitIt.call("Mugan, Jin, Fuu");