JavaScript: Malsamoj inter versioj

[kontrolita revizio][kontrolita revizio]
Enhavo forigita Enhavo aldonita
e Pikolas movis paĝon JavaScript al Ĝavoskripto: Laŭ http://komputeko.net/index_en.php?vorto=javascript
Neniu resumo de redakto
Linio 1:
[[Dosiero:JSDOM.gif|eta|Strukturo de ioj ĜavaskriptajĜavoskriptaj objektoj.]]
'''JavaScriptĜavoskripto'''<ref>[http://komputeko.net/index_en.php?vorto=javascript (esperantigiteJavascript] ''ĜavaSkripto''en [[Komputeko]]</ref> (angle: ''JavaSkriptoJavaScript'') estas [[objektema programado|objektema]] [[programlingvo]] kreita en [[1995]].
 
Oficiale JavaScript-on difinas la [[normo]] ''ECMA-262'', alinome ''ECMAScript''. La nuna versio de tiu normo estas la tria, sed la kvina versio de tiu normo projektas anstataŭigi ĝin<ref>[https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.8.5 Ŝangoj en la versio 1.8.5 de JavaScript.]</ref>.
La diversaj TTT-legiloj sufiĉe bone konformiĝas al tiu normo, sed ili kaŭzas programajn komplikojn pro malsimilaj adaptoj de la dokumentobjekta modelo (normo ''dom''), tra kiu JavaScript manipulas la fenestrajn objektojn.
 
Oficiale JavaScript-onĜavoskripton difinas la [[normo]] ''ECMA-262'', alinome ''ECMAScript''. La nuna versio de tiu normo estas la tria, sed la kvina versio de tiu normo projektas anstataŭigi ĝin<ref>[https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.8.5 Ŝangoj en la versio 1.8.5 de JavaScript.]</ref>.
La diversaj TTT-legiloj sufiĉe bone konformiĝas al tiu normo, sed ili kaŭzas programajn komplikojn pro malsimilaj adaptoj de la dokumentobjekta modelo (normo ''dom''), tra kiu JavaScriptĜavoskripto manipulas la fenestrajn objektojn.
 
==Uzo de la lingvo==
 
Ĝin funkciigas [[TTT-legilo]]j. Por sekureco de personaj komputiloj ĝi ne povas skribi sur diskojn. Ĝi estas kiel infano, ludanta intern infana ĝardeno kaj ne scianta pri eksteraj aferoj.
Iam oni trovas, ke eĉ ĉe jam ekzistaj malpermesoj eblas krei per ĜavaskriptoĜavoskripto danĝerajn programojn. Ekzemple, antaŭ kelkaj jaroj kelkaj TTT-legilaj versioj malpermesis, ke ĝavaskriptaĝavoskripta programo aperigu fenestrojn, kiuj estas tro malgrandaj, kvankam novaj fenestroj aperas ne ekster la TTT-legilo kaj ŝajnas, ke ili povas damaĝi nenion!
 
 
Utilo de la lingvo estas, ke dank ĝi TTT-legilo liberiĝas de revoki paĝon, se necesas tasko, en kiu konservendas nenio interreten (ĜavaskriptoĜavoskripto meme faras la taskon, dank tio, ke ĜavaskriptoĜavoskripto kapablas ŝanĝi bildon, kiu okupas TTT-legilan ekranon, kaj senti komandojn de homo). La plej ofta ĉi tia tasko: ĜavaskriptoĜavoskripto kontrolas ĝuston de informacio, kiun homo provas sendi per TTT-legilo (ĜavaskriptoĜavoskripto, ekzemple, insultas, se la homo tajpas vortojn en tabelon, en kiun endas tajpi nur nombrojn). Nature, la tasko, kiun faras ĜavaskriptoĜavoskripto, indas esti ne tre malfacila, ĉar komputilo, en kiu lanĉitas TTT-legilo, eblas esti ne sufiĉe forta (ekzemple, poŝkomputilo).
 
Ŝatantoj de ĜavaskriptoĜavoskripto ricevis grandan ĝojon post apero de [[HTML5|la 5a versio de HTML]]. En HTML5 aperis la kodero <code>canvas</code>, sur kiu oni povas desegni per ĜavaskriptoĜavoskripto.
 
Unu el novaj uzoj de ĜavaskriptoĜavoskripto estas malreale rigardi programojn por [[poŝtelefono]]j sen lanĉi ilin en reala poŝtelefono.
ĜavaskriptoĜavoskripto naskas TTT-legile bildon, kiu similas poŝtelefonajn aferojn.
Se en lanĉo nenio konservendas por uzati en estontaj lanĉoj, malreala lanĉo tute sufiĉas (ekzemple, poŝtelefonaj [[videoludo]]j). Bonas ideo verki programojn por ĉi tia rigardmaniero ne en speciala poŝtelefona lingvo, sed rekte ĜavaskripteĜavoskripte. Kial? Se eblas krei ilojn tradukantajn ĉi tiajn ĝavaskriptajnĝavoskriptajn programojn en la specialajn poŝtelefonajn lingvojn, oni akiras la avantaĝojn:
#Ekzistas nune multo da diferencaj poŝtelefonaj familioj: [[Android]], "Symbian", [[iPad]], ktp. Sama programo uzeblas por kelkaj familioj (necesas nur riĉa ilaro por traduki ĝavaskriptajnĝavoskriptajn programojn plurdirekte)
#ĜavaskriptonĜavoskripton lerni (krome, plisimpligitan ĜavaskriptonĜavoskripton, ĜavaskriptonĜavoskripton sen povoj, neutilaj poŝtelefone) estas pli facile ol lerni specialajn lingvojn (Ĝavo, C++, ktp.)
#Ne necesas krei ĝavaskripteĝavoskripte programon, legantan tekstojn de aliaj programlingvoj, sufiĉas nur malpermesi kelkajn tro fortajn povojn de ĜavaskriptoĜavoskripto.
Ekzistas ankaŭe unu malavantaĝo: Poŝtelefona programo, akirita traduke, ne funkcias tiom rapide kiom funkcius sama programo verkita rekte en speciala lingvo, sed la ideo modas nune.
Famas nune kelkaj ĉi tiaj manieroj verki ĝavaskriptajnĝavoskriptajn programojn, ekzemple, [[Sencha Touch]].
 
 
Ekzistas ankaŭe uzoj de ĜavaskriptoĜavoskripto ne TTT-legile. Ie ĝin oni uzas intern [[Vindozo]], ekzemple, sed ŝajnas, ke la plej fama uzo estas TTT-legila. Oni eĉ proponas inventi ĜavaskriptonĜavoskripton en [[lernejo]]jn anstaŭ tradiciajn programlingvojn por lerni [[algoritmo]]jn. Simpeco de ĜavaskriptoĜavoskripto kaj tio, ke oni bezonas neniun ilon krom TTT-legilon por lanĉi siajn programojn, estas avantaĝo (sed, nature, tio, ke TTT-legile malfacilas kontroli erarojn de programistoj, problemas lernejan uzon, necesas speciala, ne-TTT-legila, programado por sukcese instrui).
 
==Ekzemploj==
 
JavaScriptĜavoskripto ne tipigas variablojn. Variablojn oni ne bezonas deklari por ke ili estu uzeblaj.
<source lang="javascript">
x = 1
Linio 41 ⟶ 40:
Krome, oni ne bezonas uzi punktokomon post komando, se la komando estas lasta.
 
Tiel en JavaScriptĜavoskripto oni deklaras funkciojn:
<source lang="javascript">
f = function(x, y) { return x (y) }
Linio 111 ⟶ 110:
</source>
Multaj homoj opinias, ke la skripto devontus mesaĝi “Ĝise”.
Oni kutime pensas, imagante, ke post la funkcio <code>h</code> naskiĝas, la funkcio <code>h</code> ne dependas de la variablo <code>g</code>. Sed reale la skripto mesaĝas “Poste”. Kvankam la variablo <code>g</code> ne videblas ekster la funkcio <code>v</code>, kreintoj de ĜavaskriptoĜavoskripto permesis al la funkcio, kiun donas la funkcio <code>v</code>, uzi la variablon <code>g</code>. Do laŭ la difino de ĜavaskriptoĜavoskripto eblas, ke rezulto de la funkcio <code>v</code> private posedas variablon. Ĉi tia variablaro, posedata private, nomiĝas “regiono” (“scope” en la [[Angla lingvo|angla]]).
 
Fermigo (angle: “Closure”) estas tio, kio uzas la nomregionon. Ĝis morto de ĉiuj fermigoj, la ilo rubkolektilo (angle: “Garbage collector”) ne rajtas liberigi memoron, kiun okupas fermigoj. En la lasta ekzemplo, la fermigo estas rezulto de la funkcio <code>v</code>, kiu estas ankaŭ funkcio.
Linio 130 ⟶ 129:
Oni povas ekscii, ĉu objekto apartenas klason per la funkcio <code>instanceof</code>. Ekzemple: <code>onklino instanceof virino</code> estas <code>true</code>.
 
Reale, ĉiu simpla tipo en ĜavaskriptoĜavoskripto estas klaso. Ekzistas klaso:
#<code>String</code> = karaktraro
#<code>Number</code> = nombro