Temat nieco przewrotny, ponieważ język Javascript nie oferuje takiej funkcjonalności. Pisząc przestrzeń nazw mam na myśli takie izolowanie napisanego kodu, by dodanie do strony internetowej kolejnej biblioteki lub nowego skryptu, nie spowodowało nadpisywania funkcji i zmiennych globalnych. Ponadto metoda, którą za chwilę opiszę, pozwala na tworzenie funkcji i zmiennych prywatnych, do których nie ma dostępu z innych skryptów.

Mechanizm polega na wykorzystaniu literału funkcyjnego, którego wynik działania zapisujemy do zmiennej. Zmienna ta musi posiadać unikatową nazwę w skali całej aplikacji. Ostatnią rzeczą jaką musimy zrobić, to zwrócić obiekt, zawierający wszystkie funkcje i zmienne, które mają być publiczne. Reszta będzie niewidoczna dla pozostałych skryptów.

Na początek napiszmy samą funkcję.

var myUniqueNamedVar = (function() {
	return {
		
	};
})();

Wszystko co zostanie zwrócone w obiekcie, będzie dostępne dla pozostałych skryptów, a kod umieszczony poza instrukcją return, pozostanie niewidoczny.

Prosty przykład zilustruje sposób tworzenia prywatnych i publicznych funkcji.

var myUniqueName = (function() {

	var privateVar = 'abc';
	
	function privateFunction() {
		alert("private function");
	}

	return {
		publicVar: "123",
		publicFunction: function() {
			alert("public function");
		},
		publicFunctionWithParams: function(param1, param2) {
			alert("public function with params. param1: " + param1 + ", param2: " + param2);
		}
	};
})();

Wykorzystanie takiej konstrukcji jest bardzo proste i sprowadza się do wywołania odpowiednich funkcji ze zwróconego obiektu.

// wyswietli alert z trescia "public function"
myUniqueName.publicFunction();

// wyswietli alert z trescia "public function with params. param1: first param, param2: second param"
myUniqueName.publicFunctionWithParams("first param", "second param");

// wyswietli alert z trescia "123"
alert(myUniqueName.publicVar);

Próba wyświetlenia prywatnych zmiennych lub wywołania prywatnych funkcji spowoduje wystąpienie błędu.