Hallo,
Verstehe ich auch nicht - bloß um private Eigenschaften zu erhalten, braucht man das jedenfalls nicht. Darüber hinaus sehe ich in dieser Schreibweise keine Vorteile.
Naja, man beeinflusst, was bei Instance.constructor ausgegeben wird.
Beispiel:
function AnyObject() {
var privateProp = "a private property";
this.publicProp = "a public property";
var privateMethod = function () {
alert("I am a private method.");
};
this.privilegedMethod = function () {
alert("I am a privileged method. I can call private methods. And " + privateProp + ".");
privateMethod();
};
}
var myObj = new AnyObject();
alert(myObj.publicProp);
myObj.privilegedMethod();
alert(myObj.constructor);
vs.
function AnyObjectSec() {
var privateProp = "a private property";
var publicPropSec = "a public property";
var privateMethod = function () {
alert("I am a private method.");
};
var privilegedMethodSec = function () {
alert("I am a privileged method. I can call private methods. And " + privateProp + ".");
privateMethod();
};
var construct = function() {
this.publicProp = publicPropSec;
this.privilegedMethod = privilegedMethodSec;
}
return new construct();
}
myObj = new AnyObjectSec();
alert(myObj.publicProp);
myObj.privilegedMethod();
alert(myObj.constructor);
Allerdings:
alert(AnyObjectSec.toString());
;-)
viele Grüße
Axel