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:]