Autor | Zpráva | ||
---|---|---|---|
yoyer Profil |
#1 · Zasláno: 12. 7. 2008, 17:13:20
Dobrý den. Chtěl jsem se zeptat, jestli v JS existuje něco jako neměnná(read-only) proměnná. Podle názvu i češtinářsky si to odporuje, ale mohlo by to existovat. Prám se proto, že potřebuji zabránit jejímu přepsání připadným hackerem/zvědavým uživatelem. Napadlo mě vložit obsah do <textarea> a na událost onChange zareagovat zvrácením pokusu, jenže jak google tak moje pozdější zkušenosti mi řekly, že takhle to nepůjde.
Za každou radu budu vděčný. |
||
panhuhu Profil |
#2 · Zasláno: 12. 7. 2008, 18:44:26 · Upravil/a: panhuhu
Chtěl jsem se zeptat, jestli v JS existuje něco jako neměnná(read-only) proměnná.
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Constan ts |
||
Bubák Profil |
#3 · Zasláno: 12. 7. 2008, 19:39:19
yoyer
Nevím, o co přesně se pokoušíš, ale JS běží u klienta a dá se (po)změnit. Z toho důvodu nemůžeš výsledku JS věřit. |
||
ah01 Profil |
#4 · Zasláno: 12. 7. 2008, 19:58:21
panhuhu
Pokud neplánuje funkčnost pouze ve FF tak je v praxi nepoužitelné. yoyer Můžeš použít třeba privátní proměnné (pomocí closure). Nechceš trochu víc naznačit, co přesně potřebuješ? |
||
panhuhu Profil |
#5 · Zasláno: 13. 7. 2008, 00:42:35 · Upravil/a: panhuhu
ah01
Samozřejmě, že to vím. V té dokumentaci by to mělo být někde uvedeno. Nicméně od JS 2.0 by měla být definice konstanty podporována. |
||
yoyer Profil |
#6 · Zasláno: 13. 7. 2008, 12:26:22
ah01
Vytvářím aplikaci, která by byla nesmírně náročná na přenos dat a na výkonnost serveru. Z toho důvodu některá data ukládám do proměnné u klienta a následně je zpracovávám javascriptem. Proces zpracování je bezpečný a zabezpečený, jenže pokud by uživatel nepovoleně pozměnil hodnotu proměnné, mohlo by to narušit běh aplikace. Z toho důvodu potřebuji, aby se proměnná nedala změnit. |
||
ah01 Profil |
#7 · Zasláno: 13. 7. 2008, 15:38:11
|
||
los Profil * |
#8 · Zasláno: 13. 7. 2008, 17:45:45
Ak používateľ chce zmeniť hodnotu premennej, nič mu v tom nezabráni. Kým to ovplyvní iba beh u toho klienta, ktorý zmenil hodnotu, tak je úplne zbytočné to riešiť.
|
||
ah01 Profil |
#9 · Zasláno: 13. 7. 2008, 18:27:21
los
Určitě? Předpokládejme následující kód: function Osoba(jmeno, prijmeni) { var name = jmeno + " " + prijmeni; var osoba = { getName: function(){ return name; }, introduction: function(){ alert("My name is " + name); } }; return osoba; } var jan = Osoba("Jan", "Novak"); jan.introduction(); Dokážeš změnit name Osoby jan (bez toho aby jsi vytvářel novou osobu)? |
||
los Profil * |
#10 · Zasláno: 13. 7. 2008, 19:43:32
Asi si nepochopil, ako som to myslel. Keďže JavaScript sa vykonáva u klienta, tak je len na klientovi, ako ho vykoná. Napr. ho môže prehnať cez proxy a až potom ho nechá vykonať prehliadačom. Alebo môže použiť neštandardné rozšírenie (napr. vo Firefoxe sa dá zmeniť aj hodnota pseudoprivátnej premennej pomocou druhého argumentu metódy eval - v tvojom špeciálnom príklade je to síce nepoužiteľné, pretože si pomenoval tú premennú ako name). Prípadne ho vôbec nemusí spracovávať prehliadačom, ale vlastným programom. Skrátka možností je veľa.
Ak to ovplyvní len toho klienta, ktorý to zmení, tak je úplne zbytočné to ošetrovať. |
||
peta Profil |
#11 · Zasláno: 13. 7. 2008, 20:04:37
yoyer
viz Bubák a viz los JS bezi u klienta. JS take bezet u klienta nemusi. V IE7 jsou defaultne zakazane dotazovaci hlasky prompt. Udajum od klienta NELZE verit. JS nejde nijak blokovat, vzdycky ti na stranku muzu pridat vlastni script. Jeste jsem se nesetkal se stranku, kde by to neslo. Vyuzivam bookmarklet Modi2, treba. Moznosti, ktere to zakazuji podle panhuhu a ah01 nemam prozkoumane, ale myslim, ze nic takove nejde. Ani bych v tom nevidel prinos. "Vytvářím aplikaci, která by byla nesmírně náročná na přenos dat a na výkonnost serveru. " Mozna by to chtelo blizsi informace, treba by jsme ti poradili, jak snizit datovy tok na minimum. priklad - vyhledavani Nekteri lide treba vyuzivaji JS ajax pro vyhledavani informaci, ale neuvedomuji si, ze pri 1-3 znacich to najde spoustu moznosti a meli by ten ajax volat az po tretim znaku. Podobni lide volaji ajax pokazde. Jini dalsi osetri stav na 2 znaky, ale zapomenou, ze maji uz vytahle vsechny moznosti a pri znaku 3 volaji ajax zbytecne znovu, ikdyz uz ty informace jednou maji. Tohle ma smysl pouze tehdy, pokud max. pocet vysledku je omezeny a uz pri prvnim hledani byl pocet vetsi nez toto maximum. |
||
Časová prodleva: 16 let
|
0