Module Pattern
Solved the following problems in JavaScript
- Creating access control to data that should be private
- Providing a clear public API for custom libraries
- True encapsulation that was not built into JavaScript to start with
Utilizing IIFEs to Control access
Immediately Invoked Functional Expression
// IIFE will execute and return an object literal var myLibrary = (function(){ // Private scope as everything within the anonymous function is hidden // Private variables let privateData = 'this is private stuff'; // Private functions function doSomethingPrivate(){ console.log('Just did something private.') } // The returned object contains the public API to the library return { doThis: function(){ console.log('This was done.'); }, doThat: function(){ console.log('That was done.'); /* Accessible because this object was created within the scope of the anonymous function that was executed by the IIFE. */ doSomethingPrivate(); } } })(); // Accessible because they are on the API object myLibrary.doThis(); myLibrary.doThat(); // NOT accessible because it is hidden within the scope of the anonymous function // doSomethingPrivate(); // Uncommenting this line will throw an error
Published by