如何拦截或编辑咖喱功能

时间:2018-04-18 10:41:20

标签: javascript functional-programming

我是js和功能编程的新手

我的问题在下面

const orgFunc = (str, str2) =>{
    return str + ' ' + str2;
}

const curryFunc = (str) =>
{
    return orgFunc(str,'curried'); 
}

const interceptFunc = (fn) =>
{
    return fn;
}

1 console.log("orgFunc",orgFunc('func','org'));
>func org
2 console.log("curryFunc", curryFunc('func'));
>func curried    
3 console.log("interceptFunc", interceptFunc(curryFunc)('func'));
>func curried

我想将3的结果“func curried”更改为“func截获” 替换“curried”到“截获”

但是在interceptFunc函数中,

const interceptFunc = (fn) =>
{
    return fn
}

fn是函数所以我不能使用fn.replace(“curried”,“截获”)

有什么办法吗?

2 个答案:

答案 0 :(得分:1)

您可以通过修改interceptFunc功能来实现此目的。

你的interceptFunc除了返回另一个功能外没有做任何其他事情。

检查下面的代码片段,我们在其中返回另一个实际充当拦截器的函数。



const orgFunc = (str, str2) =>{
    return str + ' ' + str2;
}

const curryFunc = (str) =>
{
    return orgFunc(str,'curried'); 
}

const interceptFunc = (fn) =>
{
    return function(someInput){
      return fn(someInput).replace('curried', 'intercepted'); 
    }
}

console.log(interceptFunc(curryFunc)("func"));




答案 1 :(得分:0)

我不确定你想做什么。但你可以使用替换:



require_once dirname(__FILE__) . "/../../yourscript.php";