JavaScript: Private statische Elemente mit Closure in JavaScript

var ExampleClass = (function(){

	//privates statisches Attribut
	var staticVar = 0;

	//private statische Methode
	function staticMethod(){
	}

	return function(fooValue,barValue){
		//private Attribute
		var foo, bar;

		//private Methode
		function fooPrivate(){

		}

		//foo Setter
		this.setFoo = function(value){
			foo = value;
		}
		//foo Getter
		this.getFoo = function(){
			return foo;
		}
		//bar Setter
		this.setBar = function(value){
			bar = value;
		}
		//bar Getter
		this.getBar = function(){
			return bar;
		}

		//Konstruktorcode
		staticVar++;
		if (staticVar > 5) throw new Error('Es können nur maximal 5 Instanzen erzeugt werden.');

		this.setFoo(fooValue);
		this.setBar(barValue);
	}
})();