我正在编写一个 JS 模块模式来测试代码并帮助我使用 JS Fiddle 理解该模式。我不明白的是,为什么第 25 行和第 26 行的“私有(private)方法”在通过 DOM 就绪引用时,其值为未定义。
代码示例:
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 :)
关于准备好 DOM 的 Javascript 模块模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163393/