peterS.: statische public JavaScript Variablen

Beitrag lesen

hallo Christian S., gruss molily,

Du kannst über die Instanz-Eigenschaft constructor auf die Konstruktorfunktion zugreifen:

function Konstruktor () {

// Im Kontruktor sind drei Ansprechweisen möglich:
   alert(
      (Konstruktor === this.constructor) + "\n" +
      (Konstruktor === arguments.callee)
   ); // Die liefern alle dasselbe Funktionsobjekt.

// Nehmen wir mal this.constructor
   this.constructor.staticVariable = "bla";

/*
      wobei darauf zu achten ist, [this.constructor] ausdruecklich
      zu setzen, wenn man fuer seine objekte erreichen moechte, dass
      [this.constructor] auch immer [arguments.callee] ist ...
    /
      this.constructor = arguments.callee;
    /

      .., denn konstruktoren, die eueber ihren [prototype]n
      andere konstruktoren referenzieren, geben genau eine
      solche referenz als angeblich eigenen konstruktor aus.
    */

// In einer Methode funktioniert this.constructor auch
   this.func = function () {
      alert(this.constructor.staticVariable);
   };
}
var instanz = new Konstruktor();
instanz.func();

  
  
   und hier noch mal ein beispiel, um das oben gesagte zu demonstrieren:  
  
  
   ~~~javascript
var Collection = function () {  
  
     alert("[collection].constructor : " + this.constructor + " === Collection? " + (this.constructor === Collection));  
  
     this.constructor = arguments.callee; // needs to be set explicitly in order to break prototype chain.  
  
     alert("[collection].constructor : " + this.constructor + " === Collection? " + (this.constructor === Collection));  
   };  
   Collection.prototype = new Array();  
  
   var myColl = new Collection();

so long - peterS. - pseliger@gmx.net

--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]