0

我一直在寻找为什么我的 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..
    }
})();
4

1 回答 1

2

我不确定您要对该模块定义做什么,但是您没有从模块返回任何内容,因此模块内的函数在模块内是本地的,不能从模块外部使用。如果您查看有关揭示模块模式的参考资料,您将清楚地看到它们正在返回一个带有方法的对象,这就是分配给模块变量的内容。

也许你的意思是这样的:

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 中,就像您做得很好一样,这不会导致任何问题。分配给模块名称是零点,myModule = ...就像您没有从该 IIFE 返回任何东西一样,所以在我看来,您至少在那里走错了方向,但不了解您要做什么对于此模块或您遇到的错误,我们真的无能为力。


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

于 2015-02-10T05:10:29.817 回答