[JS] wywołanie funkcji

0

Witam, używam w kodzie packagingu. Mam problem z wywołaniem funkcji. Przykład:

Drzewo.Galaz.Lisc = function(){/konstruktor/}
Drzewo.Galaz.Lisc.prototype.metoda1 = function(){/ciało/; this.metoda2();}
Drzewo.Galaz.Lisc.prototype.metoda2 = function(){/ciało/}

potem w kodzie:

var zmienna = new Drzewo.Galaz.Lisc();
zmienna.metoda1();

problem w tym, że this.metoda2(); nie jest widziane, tzn. this nie jest obiektem Drzewo.Galaz.Lisc.

0

Oj troche źle przedstawiłem.

Drzewo.Galaz.Lisc = function(){/konstruktor/; this.metoda2();}
Drzewo.Galaz.Lisc.prototype.metoda1 = function(){/ciało/}
Drzewo.Galaz.Lisc.prototype.metoda2 = function(){/ciało/}

potem w kodzie:

var zmienna = new Drzewo.Galaz.Lisc();

Co ciekawe w innym przypadku gdy jest jak we wcześniejszym poście to jest dobrze. Wynika że nie można wywołać metody wewnętrzej obiektu z konstruktora. Jednocześnie nie moge deklaracji metody dać przed konstruktorem, bo wtedy krzyczy że nie ma obiektu. Dość liniowo ten kod jest ładowany... :-|

0

Jeja ale mam dzisiaj z głową coś... ;-P Jest tak:

Drzewo.Galaz.Lisc = function(){
/konstruktor/;
zmienna.onmousepress = function(){this.metoda2();}

}
Drzewo.Galaz.Lisc.prototype.metoda1 = function(){/ciało/}
Drzewo.Galaz.Lisc.prototype.metoda2 = function(){/ciało/}

W tym wypadku this nie jest kontekstem Drzewo.Galaz.Lisc tylko zmienna.

Muszę przekazać kontekst tak, by zamiast this było coś opowiadające Drzewo.Galaz.Lisc.
Nie moge przesłać kontekst this do funkcji, tj:

zmienna.onmousepress = function(this){... this.metoda2();}

to na tym poziomie obiektu jeszcze nie ma tak do końca i zwraca błąd że nie zadeklarowane.

0

Wklej więcej kodu i przede wszystkim powiedz co chcesz osiągnąć.

zmienna.onmousepress = function(){this.metoda2();

Nie wiem skąd się tu wzięła ta "zmienna". Jeśli chodzi Ci tylko o przekazanie kontekstu to możesz tak:

  var kontekst = this;
this.onmousepress = function () { kontekst.metoda2(); }

Wiem, że to zadziała, ale nie wiem "czy tak się robi". Pozdrawiam.

0

Dzięki bardzo :) działa, choć też przyznam że nie jest to zbyt "ładny" zabieg.

1 użytkowników online, w tym zalogowanych: 0, gości: 1