module pattern: JavaScript Object Notation

Beitrag lesen

wie private vars einbezogen werden, scheint mir plausibel. aber private methoden?

var o = new function () {  
  var private_property = "yo";  
  this.public_method = public_method;  
  
  function public_method () { alert(private_property + private_method()); }  
  function private_method () { return private_property; }  
};  
o.public_method();

bzw.

var o = (function () {  
  var private_property = "yo";  
  return { public_method : public_method };  
  
  function public_method () { alert(private_property + private_method()); }  
  function private_method () { return private_property; }  
})();  
o.public_method();

übrigens:
  function bla () {}
ist im grunde dasselbe wie
  var bla = function () {};
nur dass die das erste (die sog. function declaration) beim ausführen eines blocks zuerst ausgeführt wird, weshalb ich die funktionen oben am ende der funktion notieren konnte.

oder oder ist die private methode im grunde eben kein (echter) bestandteil der "klasse"

eine private methode ist keine wirkliche methode des öffentlich objektes. sie ist nur durch closures in den restlichen methoden verfügbar. sie http://www.crockford.com/javascript/private.html

sondern wird lediglich im gleichen scope definiert wie die klasse bzw. das objekt

ja

so dass selbiges bei seiner entstehung auf die private funktion bzw. das, was darin erzeugt wird, zugreifen kann?

ein objekt kann auf nix zugreifen. aber die funktionen, die im selben scope erzeugt werden. das hat mit OOP im grunde nichts zu tun, sondern ist ein funktionales javascript-feature - eben closures:

http://aktuell.de.selfhtml.org/artikel/javascript/organisation/#closures
http://aktuell.de.selfhtml.org/artikel/javascript/organisation/#kapselung