了解一个基本的模块模式的私有和公共功能
Understanding a basic modular patterns private and public functions
我刚才看了一个简单的模块模式演示代码,看看吧:
// Global module
var myModule = (function ( jQ, _ ) {
function privateMethod1(){
jQ(".container").html("test");
}
function privateMethod2(){
console.log( _.min([10, 5, 100, 2, 1000]) );
}
return{
publicMethod: function(){
privateMethod1();
}
};
// Pull in jQuery and Underscore
})( jQuery, _ );
myModule.publicMethod();
代码很简单,我不明白的是publicMethod
的需求是什么?为什么privateMethod1
和privateMethod2
不可访问?我知道privateMethod1
和privateMethod2
是经典的js函数,publicMethod
更多的是一个分配给保持函数的变量。
privateMethod1()
和privateMethod2()
是在模块函数包装器内声明的局部函数。因此,它们只能在该函数包装器中可见和可调用。它们不能从模块包装器外部访问。
这与函数内部的局部变量相同。
function someFunc() {
// a function declared inside another function is ONLY available
// inside that function
function localFunc() {
// do something
}
// this is just like a local variable which is only available within
// the scope of the function itself
var myVariable = 2;
}
// can't call localFunc here - this will be an error
// because it is defined in a different scope and not available here
localFunc();
当你想创建公共方法可以使用的函数或方法,但又不希望外部调用者也能够调用或使用这些函数/方法时,私有方法是很有用的。
私有变量可用于存储公共方法或私有方法想要引用的状态,但您不希望外部调用者能够访问或能够干扰。
相关文章:
- 添加文字和评论功能更新Div
- Javascript,访问一个主要对象模块模式中的每个对象
- JavaScript打印功能使日历停止工作
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 在单模式中断功能中使用Ajax渲染部分
- 为什么Chrome在“严格模式”下使用块内的功能时仍然保持沉默
- Twitter引导模式的黄瓜功能
- 如何在 Crockford 的新构造函数模式中共享“构造函数”功能
- HTML Javascript 模式弹出窗口,具有自动关闭功能
- 允许向对象添加和删除功能的设计模式
- 如何在正文加载时以全屏模式(F11 功能)打开网页
- jQuery:如果内容与正则表达式模式匹配,则执行此功能
- Twitter引导模式远程功能不能正常工作
- 如何在引导模式中添加功能- Laravel
- 如何在一个引导模式从另一个模式打开滚动功能
- 流星错误:无此功能:仅在生产模式下
- Javascript继承:用模块模式和$.extend覆盖功能
- 了解功能,找到模式
- 了解一个基本的模块模式的私有和公共功能