在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);
但[]
打印出结果。为什么呢?
答案 0 :(得分:3)
你的" splitIt"函数仍然期望this
将引用要拆分的字符串。你没有安排在这里做到这一点。
尝试
var results = splitIt.call("Mugan, Jin, Fuu");