如何通过导出导出功能相同但参数不同的功能

时间:2019-02-22 13:56:22

标签: javascript node.js module

我需要导出相同的预定义函数,但导出时具有不同的参数。

我要实现的目标:

module.exports = {
    adminSaysHello: sayText("Hello", "admin"),
    adminSaysText: sayText(text, "admin"),
    sayText: sayText
}

function sayText(text, author){
    console.log(`${author} said: ${text}`);
}

module.adminSaysHello();
module.adminSaysText("Good Bye");
module.sayText("Hello, my name is Foo", "Foo");

执行上述脚本时,出现以下错误:

    adminSaysText: sayText(text, "admin"),
                           ^

ReferenceError: text is not defined

如何正确导出?

2 个答案:

答案 0 :(得分:2)

您应该利用JavaScript中的闭包功能使其起作用。试试这个

module.exports = {
    adminSaysHello: sayText("Hello", "admin"),
    adminSaysText: sayText(text, "admin"),
    sayText: sayText
}

function sayText(text, author){

  return function(){
    console.log(`${author} said: ${text}`);
  }
}

module.adminSaysHello();
module.adminSaysText("Good Bye");
module.sayText("Hello, my name is Foo", "Foo");

答案 1 :(得分:2)

您需要创建其他函数,然后使用特定的参数调用原始函数。看起来像这样:

module.exports = {
    adminSaysHello: () => sayText('Hello', 'admin'),
    adminSaysText: (text) => sayText(text, 'admin'),
    sayText: sayText
}