准备好DOM的Javascript模块模式
Javascript Module pattern with DOM ready
我正在写一个JS模块模式来测试代码,并帮助我理解模式,使用JS提琴。我无法弄清楚的是为什么我的"私有方法"在第25行和26行,当通过DOM就绪引用时,有一个undefined的值。
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 :)
详细信息请参见更新后的jsFiddle
对象返回:
return {
test: privateFunction(),
numTwo: _numTwo()
}
你正在调用函数,你没有传递它的引用:)。
去掉括号,就可以了。
return {
test: privateFunction,
numTwo: _numTwo
}
另一种方式是:
return {
test: function() { return privateFunction(); },
numTwo: function() { return _numTwo(); }
}
这将把函数返回给另一个变量,或者只是在方法内部调用函数。
问候。
您似乎正在调用return
中的2个函数,而不是将它们分配给test/numTwo属性。
也许你可以试试这个:
return {
test: privateFunction,
numTwo: _numTwo
}
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 模块模式和这个
- 显示模块模式在Knockout中设置模型的新实例
- Javascript中的模块模式和揭示模块模式是否仅在创建API时有用;s
- JavaScript模块模式-如何在使用对象/函数之前激发构造函数/init函数
- TypeScript代码类似于揭示模块模式结构
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- JavaScript:模块模式差异
- 显示模块模式中的私有成员
- 如何将window.setTimeout与javascript和模块模式一起使用
- j查询模块模式未命名 |如何访问“$”
- 挖空和显示模块模式的数据绑定问题
- 传递参数时如何避免模块模式中的 getter/setter 函数
- JavaScript 模块模式给出了意想不到的结果
- 从模块模式开始
- 试图通过模块模式在DOM元素上实现change()事件
- 揭示模块模式、KnockoutJS和CoffeeScript
- 使用模块模式时访问父作用域中的变量
- 模块模式:函数未定义
- 如何用模块模式扩展javascript中的事件委派