objekt methode im konstruktor aufrufen?
T-Rex
- javascript
Moin,
ich möchte gerne eine Klassen eigene Methode beim initialisieren eines Objektes aufrufen. Also so
---------------------
function classe()
{
this.classe_funktion();
this.classe_funktion = function()
{
}
}
var objekt = new classe();
---------------------
Bekomme jedoch ständig die Nachricht das es die Methode noch gar nicht gibt.
danke T-Rex
Hallo T-Rex,
versuch es mal anders herum: (Unter-)Funktion erst definieren und dann aufrufen.
Gruß, Jürgen
ich möchte gerne eine Klassen eigene Methode beim initialisieren eines Objektes aufrufen. Also so
function classe()
{
this.classe_funktion();
this.classe_funktion = function()
{
}
}
var objekt = new classe();
Falls die Funktion keinen Zugriff auf private Variabeln oder Funktion haben muss, kannst die Memberfunktion auch als prototype Funktion deklarieren:
classe.prototype.classe_funktion = function() {
/*... */
};
Bekomme jedoch ständig die Nachricht das es die Methode noch gar nicht gibt.
und umgehst damit auch diesem Problem.
Struppi.
Hallo,
this.classe_funktion();
this.classe_funktion = function()
{
}
Ein Programm wird von oben nach unten Anweisung für Anweisung abgearbeitet. Das ist nichts anderes als:
alert(a);
var a = "wert";
Die Variable ist natürlich erst verfügbar, nachdem sie gesetzt wurde, deshalb wirft dieser Code einen Fehler.
Es gibt nur eine Ausnahme: Funktionsdeklarationen. Man kann schreiben:
bla();
function bla () {}
Aber man kann nicht schreiben:
bla();
var bla = function () {};
(Obwohl das haargenau denselben Effekt hat!)
Warum? Weil Expression Statements (in dem Fall mit Assigment Expressions) nacheinander ausgeführt werden.
Mathias
Hallo,
this.classe_funktion();
this.classe_funktion = function()
Warum? Weil Expression Statements (in dem Fall mit Assigment Expressions) nacheinander ausgeführt werden.Mathias
PFUI!!!!
Das bedeutet, hätte ich function this.classe_funktion () geschrieben hätte es problemlos funktioniert?
Ach naja was solls, das einfachste war einfach den Aufruf ans Ende zu setzen *gg*.
Danke
T-Rex
Hallo,
Das bedeutet, hätte ich function this.classe_funktion () geschrieben hätte es problemlos funktioniert?
Nein, wenn du eine Funktion in this.bla speichern willst, kannst du keine Funktionsdeklaration, sondern musst einen Funktionsausdruck nehmen.
function this.bla (...) {...} geht nicht, nur this.bla = function (...) {...};
Und das ist eben eine Anweisung der Sorte, die nacheinander ausgeführt werden.
Mathias