Revealing Module Pattern
Using closures in javascript, we can create public and private methods.
Only the methods and variables that are specifically returned are available publicly and we can provide references to privately declared methods and variables inside the public methods.
Layout for RMP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span style="color: #4f76ac;">var</span> applicationModule <span style="color: #1e7c70;">=</span> <span style="color: #1e7c70;">(</span><span style="color: #4f76ac;">function</span><span style="color: #1e7c70;">()</span> <span style="color: #1e7c70;">{</span> <span style="color: #46830d;">//private variable. Existence limited within</span> <span style="color: #46830d;">//this closure</span> <span style="color: #4f76ac;">var</span> privateVariable <span style="color: #1e7c70;">=</span> <span style="color: #9b5f9b;">10</span><span style="color: #1e7c70;">;</span> <span style="color: #4f76ac;">var</span> privateFunction <span style="color: #1e7c70;">=</span> <span style="color: #4f76ac;">function</span><span style="color: #1e7c70;">()</span> <span style="color: #1e7c70;">{</span> <span style="color: #46830d;">//Not accessible publicly</span> <span style="color: #1e7c70;">};</span> <span style="color: #46830d;">//accessibly publicly as</span> <span style="color: #46830d;">//applicationModule.publiclyReturnPrivateVar</span> <span style="color: #4f76ac;">var</span> publicFunction <span style="color: #1e7c70;">=</span> <span style="color: #4f76ac;">function</span><span style="color: #1e7c70;">()</span> <span style="color: #1e7c70;">{</span> <span style="color: #4f76ac;">return</span> privateVariable<span style="color: #1e7c70;">;</span> <span style="color: #1e7c70;">};</span> <span style="color: #4f76ac;">return</span> <span style="color: #1e7c70;">{</span> publiclyReturnPrivateVar<span style="color: #1e7c70;">:</span> publicFunction <span style="color: #1e7c70;">};</span> <span style="color: #1e7c70;">})();</span> <span style="color: #46830d;">//prints value of privateVariable</span> console.log<span style="color: #1e7c70;">(</span>applicationModule.publiclyReturnPrivateVar<span style="color: #1e7c70;">());</span> |
0 comments