// create an scope by declaring anonymous function and immediately executing it
// the return value will be assigned to myModule...
var myModule = (function(){
// return the parts of the scope to be exposed publicly
return {
someMethod: someMethod,
otherMethod: otherMethod
}
function someMethod(item){ return myPrivateSquareFunction(item) * 2; };
function otherMethod(item){ return item * 5; };
// private function can be called from in the module's scope, but not externally
function myPrivateSquareFunction(item){ return item * item; }
})();
// now, out here you can call `otherMethod`, and `someMethod` (which itself calls `myPrivateSquareFunction`) but you can not call `myPrivateSquareFunction`...
console.log(someMethod(3)); // 18
console.log(otherMethod(3)); // 15
console.log(myPrivateSquareFunction(3)); // ERROR!
dieses Muster verwenden, können Sie wählen, welche Implementierungsdetails privat bleiben, und was an das Modul ausgesetzt werden muss. Dies hilft Ihnen dabei, Ihren Code in diskrete Abschnitte aufzuteilen, die isoliert bearbeitet und getestet werden können, ohne dass der Rest der Anwendung die Funktion verkompliziert. Wenn Sie dann viele kleine Codeabschnitte haben, die ihren eigenen Job korrekt ausführen und ordnungsgemäß getrennt sind, ist es einfacher, sie zu einer komplexeren Anwendung zusammenzustellen.
Es ist nur Code, um ein Objekt zurückzugeben. Der Zweck hängt vom Kontext ab, aber es ist nur ein Objektliteral. – Pointy