Type script volání private metody zevnitř objektu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Type script volání private metody zevnitř objektu – JavaScript, AJAX, jQuery – Fórum – Programujte.comType script volání private metody zevnitř objektu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

ondra
~ Anonymní uživatel
244 příspěvků
8. 12. 2014   #1
-
0
-

Dobrý den,

narazil jsem v typeScriptu na problém

mám nějakou třídu:

class A{

...

private init() { this.refresh(); }

private refresh() {....}

...

}

V kodu mám nějaký button po kterém se vyvolá událost click a zavolá se init na objekt třídy A. Když se vykonává init tak chce zavolat metodu refresh,ale do console mně vyskočí chyba  "Uncaught TypeError undefined is not function ... "

Nevíte někdo co může být špatně? :-(

Nahlásit jako SPAM
IP: 2001:718:1001:110:9052:55...–
peter
~ Anonymní uživatel
4016 příspěvků
9. 12. 2014   #2
-
0
-

Nevim, co je type script. Urcite se to da nazvat cesky nebo jednoduse.
Ten kus kodu mi nepripada jako javascript, tam se obvykle slova jako private a class nepouzivaji. Neni to nahodou java nebo jiny programovaci jazyk? Jeste by to mohl byt javascript pro prohlizec, ale ten neznam.

Jestli chces poradit s nejakym kodem, pak musis uvest funkcni verzi kodu.
Kdyz jdes treba za automechanikem bez auta, tak ti ani spravny klic v jeho ruce to zadne auto nespravi....

"Uncaught TypeError undefined is not function ... "
Ta chyba znamena presne to, co je tam napsane. Volas neco, co neni funkce.

A) Zkus si udelat alert(promenna) nebo alert(promenna.toSource()) (ve firefox). Zkus si prohledat kod na duplicity, Bud v js mas duplicitu promenna a funkce a nebo mas funkci duplicitne s name (form.submit.value je <input type=cokoliv name=submit> a tudiz pak form.submit(), odeslani formulare, napise error, portoze jsi submit funkci prepsal inputem)

B) Pokud v js prirazujes onclick, musi se to prirazovat jako funkce. Ne, jako v html
<input name=aaa type=no-submit! onclick="alert();funkce();">
form.aaa.onclick=function(event) {alert();funkce();}
form.aaa.onclick=funkce; // kde funkce je definovana jako function funkce(event) {...}

C) pak sis mozna prepsal event pro window.onload
<body onload="aaa();">
window.onload=bbb; // na onload se uz nevola aaa(), ale bbb()
window.onload=ccc; // ne bbb, ale ccc
window.onload=function() {aaa();ccc();} // ne ccc, ale aaa a ccc

D) Pripadne u ajaxu treba jeste neskoncil prenos dat a tudiz treba nejaka funkce neexistuje. To by ale napsal spis not exist

Nicmene, bez kodu existuje dalsich X moznosti, kde je chyba a nema smysl tu kazdou z nich jmenovat.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:dc2c:c0...–
LukoSS
~ Anonymní uživatel
73 příspěvků
9. 12. 2014   #3
-
0
-

#1 ondra
Koukni sem. Zkráceně - this odkazuje na JavaScriptový objekt window (tak jako v klasickém JavaScriptu). Jelikož window.refresh neexistuje (je undefined), tak ti to vyhodí chybu, že není možné zavolat funkci undefined. V tom odkaze najdeš řešení, díky kterému je možné to this použít (obalení do lambda výrazu).

#2 peter
TypeScript (nebo případně i CoffeeScript) se dnes docela běžně používá, možná by stálo za to kouknout na google a doplnit si znalosti   

Nahlásit jako SPAM
IP: 88.103.252.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Volání metody ukazatelem — založil hlucheucho

Volání metody uvnitř vlákna — založil Dan3czek

Volání metody jiné třídy — založil Matěj_

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý