JSFiddle - React, Tailwind, and code Playground
by Peter Hozák
HTML
See console.
JavaScript
window.MODULE = {}
MODULE.constructor = (function(){
"use strict";
var _privateStaticVariable = 1;
var publicStaticObject = {
i: 0,
f: function(){
return _privateStaticVariable += this.i;
}
};
return function(){ // constructor
var _privateMemberVariable = 1;
var _privateMemberMethod = function(value){
return _privateMemberVariable += value;
};
this.publicMemberVariable;
this.privilegedMemberMethod = function(value){
this.publicMemberVariable = _privateMemberMethod(value);
};
this.static = publicStaticObject; // only works for objects
};
}());
MODULE.constructor.prototype.publicMemberMethod = function(){
return this.publicMemberVariable; // no access to _privateMemberVariable
};
MODULE.closure = (function(){
"use strict";
var _privateStaticVariable = 1;
var publicStaticObject = {
i: 0,
f: function(){
return _privateStaticVariable += this.i;
}
};
var publicMemberMethod = function(){
return this.publicMemberVariable; // no access to _privateMemberVariable
};
return function(){ // closure
var _privateMemberVariable = 1;
var _privateMemberMethod = function(value){
return _privateMemberVariable += value;
};
var obj = {};
obj.publicMemberVariable;
obj.privilegedMemberMethod = function(value){
obj.publicMemberVariable = _privateMemberMethod(value);
};
obj.static = publicStaticObject; // only works for objects
obj.publicMemberMethod = publicMemberMethod;
return obj;
};
}());
for (technique in MODULE) {
if (technique === "constructor") {
var a = new MODULE[technique]();
var b = new MODULE[technique]();
} else {
var a = MODULE[technique]();
var b =...