在Javascript

时间:2017-04-14 11:44:20

标签: javascript design-patterns revealing-module-pattern

在JavaScript中实现Revealing模块模式时,如何将参数传递给函数。我有一个像这样的模块

var GlobalModule = (function() {
    function consoleLog(textToOutput) {
        console.log(textToOutput);
    }

    return {
        consoleLog: consoleLog()
    };
})();

稍后,当我运行GlobalModule.consoleLog("Dummy text");时,我会将undefined作为输出。

4 个答案:

答案 0 :(得分:3)

return {
    consoleLog: consoleLog()
};

你的代码部分是错误的。 您正在导出consoleLog调用的Result,因为函数末尾的()是您要自行导出函数的位置。 所以只需删除函数调用:

return {
    consoleLog: consoleLog
};

答案 1 :(得分:2)

在返回对象中使用函数



var GlobalModule = (function() {
  return {
    consoleLog: function(textToOutput)
    {
     console.log(textToOutput);
    }
  }
})();

GlobalModule.consoleLog("Dummy text");




简单地完成相同的输出。 object => function call。不需要返回对象



 var GlobalModule ={
        consoleLog: function(textToOutput) {
                                    console.log(textToOutput);
                                  }
      }

    GlobalModule.consoleLog("Dummy text");




答案 2 :(得分:1)

更改行

consoleLog: consoleLog()

consoleLog: consoleLog

甚至(es6)到:

consoleLog

答案 3 :(得分:0)

你可以这样做

var GlobalModule = (function() {
    function consoleLog(textToOutput) {
        console.log(textToOutput);
    }

    return {
        consoleLog: consoleLog // () is removed otherwise it will execute immediately
    };
})();

GlobalModule.consoleLog('Hello')

DEMO

您想传递一个全局变量,在IIFE的括号中传递它

var GlobalModule = (function(x) {
    function consoleLog(textToOutput) {
        console.log(textToOutput,x); // will log Hello temp
    }
   return {
        consoleLog: consoleLog
    };
})('temp');