Revision: 43134
Updated Code
at January 5, 2012 00:40 by coprolit
Updated Code
/* The idea here is that you have private methods which you want to expose as public methods. */ var SomeModule = (function(param){ // Private stuff // 'this' keyword refers to the current instance. Must use 'new' when creating instances of the module, else 'this' will refer to global scope. this.initval = param; this.name = 'John Smith'; this.age = 40; function setPerson(param) { this.name = param; } function getPerson() { return this.name; // create closure (inner function) to bind the var (= keep it around) } // Public stuff / reveal and bind return { set: this.setPerson, get: this.getPerson, age: this.age }; }); // creating instances var newModule = new SomeModule(newparam); newModule.set("Some Name"); var name = newModule.age; var name = newModule.get;
Revision: 43133
Updated Code
at March 17, 2011 20:02 by coprolit
Updated Code
/* The idea here is that you have private methods which you want to expose as public methods. */ var myRevealingModule = function(){ //private attributes var privateVar = 5; //private methods function setVar(arg) { privateVar = arg; }; function getVar() { return privateVar; }; //revealing public API aka public methods return { set: setVar, get: getVar } }(); // Sample usage: myRevealingModule.set(7); myRevealingModule.get();
Revision: 43132
Updated Code
at March 17, 2011 20:01 by coprolit
Updated Code
/* The idea here is that you have private methods which you want to expose as public methods. */ var myRevealingModule = function(){ //private attributes var privateVar = 5; //private methods function setVar(arg){ privateVar = arg; }; function getVar(){ return privateVar; }; //public methods return{ set: setVar, get: getVar } }(); // Sample usage: myRevealingModule.set(7); myRevealingModule.get();
Revision: 43131
Updated Code
at March 17, 2011 09:11 by coprolit
Updated Code
/* The idea here is that you have private methods which you want to expose as public methods. */ var myRevealingModule = function(){ //private attributes var privateVar = 5; //private methods function setVar(){ var privateVar = 10; }; function getVar(){ return privateVar; }; //public methods return{ set: setVar, get: getVar } }(); // Sample usage: myRevealingModule.get(); // Douglas Crockford style: var myModule = (function(){ //private attributes var privateVar = 5; //private methods var privateMethod = function(){ return 'Private Test'; }; return { //public attributes publicVar : 10, //public methods publicMethod : function(){ return ' Followed By Public Test '; }, //let's access the private members getData : function(){ return privateMethod() + this.publicMethod() + privateVar; } } })(); //the parens here cause the anonymous function to execute and return myModule.getData();
Revision: 43130
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 17, 2011 08:40 by coprolit
Initial Code
var someModule = (function(){ //private attributes var privateVar = 5; //private methods var privateMethod = function(){ return 'Private Test'; }; return { //public attributes publicVar : 10, //public methods publicMethod : function(){ return ' Followed By Public Test '; }, //let's access the private members getData : function(){ return privateMethod() + this.publicMethod() + privateVar; } } })(); //the parens here cause the anonymous function to execute and return someModule.getData();
Initial URL
http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#designpatternsjavascript
Initial Description
"Javascript module pattern emulates the concept of classes in such a way that we're able to include both public/private methods and variables inside a single object, thus shielding/namespacing particular parts from the global scope." When inheritance is not needed and a only few instances is needed (Keep in mind that each instance places a new copy of each function in memory!)
Initial Title
Javascript revealing module pattern template
Initial Tags
javascript, class, object, template, module
Initial Language
JavaScript