我偶然发现了这篇文章:JavaScript的Revealing Module Pattern.我想在我的项目中使用它.
让我们想象一下我有一个函数abc,我在我的主JavaScript文件中调用该函数.
这种模式会使事情变得不同吗?谁能告诉我这种模式的基本例子?
Koo*_*Inc 97
一个小例子:
var revealed = function(){
var a = [1,2,3];
function abc(){
return (a[0]*a[1])+a[2];
}
return {
name: 'revealed',
abcfn: abc
}
}();
Run Code Online (Sandbox Code Playgroud)
在匿名函数中,该函数被启动以提供revealed值,a并且abc对该函数是私有的.函数返回的是具有name属性和abcfn属性的对象文字,它是对的引用abc function.在abc function使用私有变量a.这可以通过使用闭包来完成(函数范围内的所有内容都可以由同一函数中的其他所有内容引用).
显示用法:
alert(revealed.name); //=> 'revealed'
alert(revealed.abcfn()); //=> 5 (1*2+3)
Run Code Online (Sandbox Code Playgroud)
Rob*_*nik 23
DC = Douglas Crockford
RMP =揭示模块模式
例子在文章中提出了吗?你究竟在问什么,因为这些东西与文件无关,而是与闭包有关.
您将所有内容放在闭包(函数)中,并仅显示您希望可访问的那些部分.DC的风格和RMP之间的区别是,在第一个功能在不同的地方被定义而在RMP,他们在同一个地方总是定义,然后再把显露在公众对象文本.
所以在DC和RMP中你有:
这两种模式的不同之处仅在于可读性.在DC情况下,您无法始终知道某些功能将在何处定义,但在RMP中,您始终知道所有功能都在私有部分中.
作者"Douglas Crockford创建对象的模式"所称的方法实际上是由Richard Cornford 等人开发的模块模式.请参阅http://groups.google.com/group/comp.lang.javascript/msg/9f58bd11bd67d937
例如,有很多.阅读以下文章并关注以下链接:http://peter.michaux.ca/articles/module-pattern-provides-no-privacy-at-least-not-in-javascript-tm
| 归档时间: |
|
| 查看次数: |
48381 次 |
| 最近记录: |