Autor | Zpráva | ||
---|---|---|---|
ServIT Profil |
#1 · Zasláno: 4. 3. 2023, 20:47:57
Dobrý den,
nejsem v JS lumen, ale napadlo mě vytvořit pro jednu proměnnou getter, který by počítal proměnnou .. ale jen jednou. Pokud by již byla proměnná definována, tak prostě vrátí proměnnou . příklad : projFunc={ get currPage(){ return window.location.pathname; }, get uVar(){ thisVar=null; if ( isnull( thisVar) ) { ... počítání ... } else { return thisVar; } }, |
||
Firibix Profil |
#2 · Zasláno: 5. 3. 2023, 00:43:24
Reakce na ServIT:
„Je to takto správně ? podle mě se thisVar pokaždé vynuluje“ Je to dokonce ještě horší, před thisVar není klíčové slovo let , tedy se zakládá jako globální proměnná. A samozřejmě se pokaždé přepisuje na null , čímž smaže zapamatovaný výsledek výpočtu.
„Jak udělat statickou proměnnou ?“ Statická třídní proměnná by byla chybná volba, měla by stejnou hodnotu napříč různými instancemi třídy. Například pokud by třída Zboží měla instanci boty a televize a ve statické proměnné cena uloženou složitě spočítanou cenu, stály by boty i televize stejně.
Normálně založ členskou proměnnou objektu, ve které se bude výsledek výpočtu uchovávat, a v getteru zkontroluj, zda už je zapamatovaný: const obj = { _field: null, get property() { if (this._field !== null) return this._field; this._field = Math.random(); return this._field; } }; document.write(obj.property); // spusti Math.random() document.write('<br>'); document.write(obj.property); // vrati zapamatovanou hodnotu document.write('<br>'); document.write(obj.property); // vrati zapamatovanou hodnotu Živá ukázka. |
||
Časová prodleva: 9 dní
|
|||
ServIT Profil |
#3 · Zasláno: 14. 3. 2023, 11:25:17
Firibix: Děkuji za reakci ... udělal jsem to tak, a funguje to, děkuji
, |
||
Časová prodleva: 8 dní
|
0