Hallo,
http://forum.de.selfhtml.org/my/?t=203423&m=1377121. Du kannst private Variablen nicht simulieren. Entweder du sie sind im Functionscope nach außen nicht sichtbar. Oder sie sind nach außen sichtbar. Nichts anderes ist "privat". Aus meiner Sicht. "privat" === "nach außen nicht sichtbar" === "von außen nicht direkt zugreifbar".
Das ist deine Sichtweise, mir geht es um private Variabeln die in der Klasse sichtbar sind und das kann man simluieren:
var MyClass = (function() {
var private;
function Proto(){}
Proto.prototype.func = function() {return private;};
Proto.prototype.tu_was = function(p) {private = p * p;};
return Proto;
})();var c = new MyClass();
c.tu_was(2);
alert(c.func());
>
> Struppi.
Das ist keine Simulation. Das ist die Umsetzung eines Konzeptes. Hatte ich eben schon verlinkt, hier der Auszug:
~~~javascript
YAHOO.myProject.myModule = function () {
//"private" variables:
var myPrivateVar = "I can be accessed only from within YAHOO.myProject.myModule.";
//"private" method:
var myPrivateMethod = function () {
YAHOO.log("I can be accessed only from within YAHOO.myProject.myModule");
}
return {
myPublicProperty: "I'm accessible as YAHOO.myProject.myModule.myPublicProperty.",
myPublicMethod: function () {
YAHOO.log("I'm accessible as YAHOO.myProject.myModule.myPublicMethod.");
//Within myProject, I can access "private" vars and methods:
YAHOO.log(myPrivateVar);
YAHOO.log(myPrivateMethod());
//The native scope of myPublicMethod is myProject; we can
//access public members using "this":
YAHOO.log(this.myPublicProperty);
}
};
}(); // the parens here cause the anonymous function to execute and return
aus http://www.yuiblog.com/blog/2007/06/12/module-pattern/.
"Douglas Crockford has been teaching a useful singleton pattern for achieving this discipline, and I thought his pattern might be of interest to those of you building on top of YUI. Douglas calls this the “module pattern.”
Gruß
jobo