【问题标题】:javascript revealing module pattern ignored on serverjavascript揭示服务器上忽略的模块模式
【发布时间】:2015-02-10 05:08:15
【问题描述】:

我一直在寻找为什么我的 javascript 代码完全在我的虚拟主机上的答案。在我尝试使用 javascript 中的显示模块模式修改它们之前,我有现有的 javascript 函数,这些函数过去可以正常工作,因为从我收集的信息来看,这是减少污染全局命名空间的好习惯。在这个范围之外没有函数调用,所以我没有使用 return 来指向函数。从 Visual Studio 进行测试时,它在不同的浏览器中运行良好。

godaddy 服务器中是否有我需要配置的东西?我试图打电话给他们寻求支持,但没有帮助。下面是我的代码示例。我实际上在这个范围内有更多的功能,但对这个问题保持简短。提前致谢。

myModule = (function () {

    //add upDate
    function timeOfUpdate {
    var timeOfUpdate = new Date(document.lastModified);
        $("#lastUpdate").append(timeOfUpdate);

    }
    //add some more functions
    function modTwo {
    //add code to execute..
    }
})();

【问题讨论】:

    标签: javascript visual-studio revealing-module-pattern


    【解决方案1】:

    我不确定你到底想用那个模块定义做什么,但你没有从模块返回任何东西,所以模块内的函数是模块内的本地函数,不能从外部使用模块。如果您查看this reference on the revealing module pattern,您会清楚地看到它们返回的是一个带有方法的对象,这就是分配给模块变量的内容。

    也许你的本意是这样的:

    var myModule = (function () {
    
        return {
            //add upDate
            timeOfUpdate: function {
                var timeOfUpdate = new Date(document.lastModified);
                $("#lastUpdate").append(timeOfUpdate);
    
            },
            //add some more functions
            modTwo: function {
                //add code to execute..
            }
        }
    })();
    

    这会从 IIFE 返回一个对象,以便 myModule 成为一个对象,该对象具有您的方法 timeOfUpdate()modTwo() 作为对象的属性。

    然后,您可以通过以下方式访问您的函数:

    myModule.timeOfUpdate();
    myModule.modTow();
    

    如果您不尝试从模块外部使用任何这些功能,那么您必须向我们提供有关您尝试执行的操作以及您看到的错误的更多详细信息。您可以将一堆代码包装在 IIFE 中,就像您做得很好一样,这不会导致任何问题。如果你没有从那个 IIFE 返回任何东西,那么在分配给模块名称时有零点,如 myModule = ...尝试使用此模块或遇到什么错误,我们真的无能为力。


    此外,您的示例显示了一些本地函数定义,但没有显示调用任何函数,因此在您插入一些实际调用您的函数的代码之前不会发生任何事情。

    【讨论】:

    • 是的 jfriend00。谢谢你。我的脚本现在正在运行。调用主对象并附加 timeOfUpdate() 是我缺少的部分。我被锁定在这样的想法中,因为我在 myModule 值的末尾有一个自调用运算符,它会自动调用我在其范围内的方法而不进行调用。感谢您指出这个问题。
    • @smundoKo2 - 由于您似乎是 StackOverflow 的新手,您是否知道当您的问题得到回答时,您可以通过单击绿色复选标记来指明您的问题的“最佳答案”答案的左边。这将为您和提供答案的人在 StackOverflow 上赢得一些声誉积分。声望积分的积累将为您赢得更多特权。
    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多