准备好 DOM 的 Javascript 模块模式

标签 javascript jquery

我正在编写一个 JS 模块模式来测试代码并帮助我使用 JS Fiddle 理解该模式。我不明白的是,为什么第 25 行和第 26 行的“私有(private)方法”在通过 DOM 就绪引用时,其值为未定义

JSFiddle

代码示例:

var obj = {
    key: "value"
};

var Module = (function () {

  var innerVar = "5";

  console.log("obj var in Module:");
  console.log(obj);

function privateFunction() {
    console.log("privateFunction() called.");
    innerFunction();

    function innerFunction() {
        console.log("inner function of (private function) called.");
    }
}

function _numTwo() {
    console.log("_numTwo() function called.");
}
return {
    test: privateFunction,
    numTwo: _numTwo

}


}(obj));


$(document).ready(function () {
    console.log("$ Dom Ready");
    console.log("Module in Dom Ready: ");
    console.log(Module.test());
});

最佳答案

您正在将调用 privateFunction 的返回结果输出到控制台,在本例中没有返回结果。

...
function privateFunction() {
    console.log("privateFunction() called.");
    innerFunction();

    function innerFunction() {
        console.log("inner function of (private function) called.");
    }
    return 'not undefined :)';
}
...

控制台输出:

obj var in Module: (index):30
Object {key: "value"} (index):31
$ Dom Ready (index):57
Module in Dom Ready:  (index):58
privateFunction() called. (index):34
inner function of (private function) called. (index):38
not undefined :) 

See the updated jsFiddle for details

关于准备好 DOM 的 Javascript 模块模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163393/

相关文章:

javascript - JavaScript中如何判断一个对象是否具有给定的属性

javascript - 隐藏除事件之外的所有子 Div...Javascript

jquery - 当 Bootstrap 工具提示处于事件状态时,会阻止触发 jquery 事件

javascript - 如何更改谷歌折线图的外观

JQuery,传递参数

jquery - 我不明白为什么我无法在 jquery 中选择属性

javascript - 如果使用单个实体,使用自动映射器对我来说效果很好

javascript - Angular4 - 如何动态设置选择选项值

javascript - 让脚本在浏览器中运行 x 秒有什么影响吗?

javascript - document.domain 同源策略不起作用