Hallo,
und genau das ist das Problem von JS. Die Kapselung erfolgt nicht so, dass sie für einen OO Ansatz wirklich verwendbar ist.
Das geht nicht:
function MyClass(){
var private;
}MyClass.prototype.myFunction = function() {
alert(private);
};
~~~javascript
function MyClass(){
var myPrivate = "privat";
this.getMyPrivate = function () {
alert(myPrivate);
}
}
var myObj = new MyClass();
alert(myObj.myPrivate); // undefined
myObj.getMyPrivate(); // "privat"
MyClass.prototype.myFunction = function() {
alert("gibsnich: " + typeof myPrivate);
};
alert(myObj.myFunction);
myObj.myFunction(); //myPrivate is undefined
Schien bei mir so zu funktionieren. "Private" ist reserviert.
Und damit ist die Kapselung hinfällig oder du musst den Umweg über ein zusätzliches closure gehen.
Wieso ist ein Closure ein Umweg?
Gruß
jobo