我必须编写一个包含函数的currying函数,执行另一个函数,然后通过将最后一个参数作为要计算的值来执行第二个函数。
我正在努力解决的问题:如何同时访问第一个函数和最后一个值?
到目前为止,我可以通过使用函数语法编写一个函数并访问this来访问第一个函数。
Function.prototype.foo = function(x) {
// can't make currying functions by using functions keyword
console.log(this, x);
};
(() => 10).foo(1);
当我编写一个currying函数时,我可以访问第二个(x)和第三个(y)函数。
Function.prototype.bar = x => y => {
// but also can't access this like in function syntax
console.log(x, y);
}
// how would I access 10 in bar?
(() => 10).bar(1)(2);
最终功能看起来像这样:
someFunc.then(someSecondFunc).then(someThirdFunc)(100)
非常感谢您的帮助!
答案 0 :(得分:1)
不确定是否可以解决您的问题,但是可以使用function关键字创建currying函数:
Function.prototype.bar = function(x) {
return function(y) {
console.log(x, y)
}
}
我实际上无法验证是否可行:
(function() {return 10}).bar(1)(2)
在任何情况下,ˋthisˋ都是函数,而不是返回值(10),因为未调用该函数。
答案 1 :(得分:0)
通过使用currying函数和function关键字,我的答案看起来像这样:
Function.prototype.then = function(secondFct) {
const firstFct = this;
return function(value) {
return firstFct(secondFct(value));
}
}
非常感谢buboh的帮助。