Autor | Zpráva | ||
---|---|---|---|
Johnik Profil |
#1 · Zasláno: 21. 7. 2012, 11:32:55
function Loader() { this.load = function() { var image = new Image(); image.onload = this.image_completeHandler; //image.addEventListener("load", this.image_completeHandler); image.src = "..."; ... } this.image_completeHandler = function(event) { console.log("complete"); } } Ve výše uvedeném kódu mi jde o řádek s image.onload = this.image_completeHandler; (případně image.addEventListener("load", this.image_completeHandler); ), což by podle mého očekávání mělo po načtení obrázku vyvolat přiřazenou funkci v tom objektu. Nicméně se tak nestane a jak jsem se dočetl, tak this na pravé straně již neukazuje na objekt, ale na objekt toho obrázku (Image). Lze nějak udělat, aby handlerem mohla být funkce na objektu, který Image vytváří? Aby this nezměnilo kontext?
Děkuji za odpovědi. |
||
Chamurappi Profil |
#2 · Zasláno: 21. 7. 2012, 12:38:14
Reaguji na Johnika:
„this na pravé straně již neukazuje na objekt, ale na objekt toho obrázku (Image)“ Není pravda, this se v průběhu funkce nikdy nemění. Teprve uvnitř image_completeHandler bude this onen obrázek, protože tato funkce bude zavolána v kontextu obrázku — a tam jde problém vyřešit tím, že si referenci na původní this uložíš do nějaké proměnné.
Pokud ti uvedený kód nefunguje, buď se snažíš načítat něco, co není obrázkem, nebo máš chybu v něčem, cos neukázal. „případně image.addEventListener“ Nefunguje ve všech prohlížečích (a je to zbytečně ukecané). |
||
Časová prodleva: 11 let
|
0