Axel Richter: Verständnisfrage

Beitrag lesen

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