| Autor | Zpráva | ||
|---|---|---|---|
| honzaik Profil |
ahoj ten titul je trochu divný ale nevím jak to jinak vysvětlit. prostě chci se zeptat, jestli je možné a pokud jak udělat aby když mám např objekt
var obj = {
time: 0,
realtime: this.time/100
}var time = 0;
var obj = {
realtime: time/100
}/////////// tak jsem vykoumal že to jde udělat takhle var obj = {
time: 0,
realtime: function(){
return this.time/100
}
}var obj = {
time: 0,
realtime: function(){
return this.time/100
}()
} |
||
| Joker Profil |
#2 · Zasláno: 6. 5. 2013, 20:57:28
honzaik:
„toto nefunguje (realtime = NaN)“ Protože nejste v tom správném kontextu, this nebude ten objekt obj, ale ten v rámci kterého ten skript běží. Například tohle by fungovalo: var obj = { Time: 0, getRealTime: function() { return this.Time / 100; }} |
||
| honzaik Profil |
#3 · Zasláno: 6. 5. 2013, 21:15:10
to jsem si myslel že v tom this bude problém. děkuji za vysvětlení
|
||
| preca1 Profil |
#4 · Zasláno: 6. 5. 2013, 21:17:53
Zdravim,
přečti si, jak v JS funguje kouzelné slovíčko this. Z toho by ti mělo bejt jasný, proč nefunguje tvůj první příklad (otázka za jednoho bludišťáka: co je v this?). Proč funguje tvůj třetí příklad (a to je podle mě správné řešení) by ti taky mělo být jasný po přečtení a pochopení slovíčka this. Definoval si na objektu funkci, která už má přístup k aktuálnímu objektu.
Kdyby si debugoval ten poslední příklad, tak by si zjistil, že si napsal skoro to samý, jako v prvním příkladu. (Opět si zjisti, co je v this.) To, co si zmínil ty (vytvoření třídy), je něco takového: function obj(val) {
this.val = val;
this.realTime = this.val / 10;
}
a = new obj(40);
a.realTime; // >> 4A poslední řešení (bez použití funkce): var obj2 = { // definuješ objekt a základní hodnoty
time: 30
};
obj2.realTime = obj2.time / 100; // dopočítáš ostatní hodnotyDalší důležitá věc je, že JavaScript není Java. |
||
| honzaik Profil |
#5 · Zasláno: 6. 5. 2013, 22:59:07
díky právě když jsem napsal napsal ten dotaz tak jsem si všiml odkazu v kódu na "this" na offic dokumentaci :D tak jsem si právě četl. všechno jsem si zkoušel v konzoli atd. to se neboj. k tý javě jsem to myslel tím že přece něco spolu maj společnýho a předpokládal že to this bude hodně podobný :D ale teď čtu "A function's this keyword behaves a little differently in JavaScript compared to other languages." hah
|
||
|
Časová prodleva: 12 let
|
|||
0