JavaScript: Malsamoj inter versioj

[kontrolita revizio][nekontrolita versio]
Enhavo forigita Enhavo aldonita
<source/> → <syntaxhighlight/>; <references/> → {{referencoj}}; {{Bibliotekoj}}
Linio 6:
 
==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 Ĝavoskripto danĝerajn programojn. Ekzemple, antaŭ kelkaj jaroj kelkaj TTT-legilaj versioj malpermesis, ke ĝ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 (Ĝavoskripto meme faras la taskon, dank tio, ke Ĝavoskripto kapablas ŝanĝi bildon, kiu okupas TTT-legilan ekranon, kaj senti komandojn de homo). La plej ofta ĉi tia tasko: Ĝavoskripto kontrolas ĝuston de informacio, kiun homo provas sendi per TTT-legilo (Ĝavoskripto, ekzemple, insultas, se la homo tajpas vortojn en tabelon, en kiun endas tajpi nur nombrojn). Nature, la tasko, kiun faras Ĝavoskripto, indas esti ne tre malfacila, ĉar komputilo, en kiu lanĉitas TTT-legilo, eblas esti ne sufiĉe forta (ekzemple, poŝkomputilo).
Linio 28 ⟶ 26:
 
==Ekzemploj==
 
Ĝavoskripto ne tipigas variablojn. Variablojn oni ne bezonas deklari por ke ili estu uzeblaj.
<sourcesyntaxhighlight lang="javascript">
x = 1
x = "Hello World!"
y = x + 2
// “y” valoras "Hello World!2".
</syntaxhighlight>
</source>
 
Vi povas vidi, ke, malsimile al Ĝavo, oni ne devas uzi punktokomojn inter komandoj, se la komandoj ne apartenas al la sama linio.
Linio 41 ⟶ 38:
 
Tiel en Ĝavoskripto oni deklaras funkciojn:
<sourcesyntaxhighlight lang="javascript">
f = function(x, y) { return x (y) }
</syntaxhighlight>
</source>
 
Vi povas vidi, ke funkcio povas esti argumento por alia funkcio (tra la argumento "x" oni povas meti funkcion).
Linio 50 ⟶ 47:
Ĉi tiu ilo estas la vorto <code>var</code>:
 
<sourcesyntaxhighlight lang="javascript">
g = function(x, y) { s=x+y; var s; return s*2}
</syntaxhighlight>
</source>
 
La variablo <code>s</code> ne videblas ekster la funkcio g pro la komando "<code>var s</code>".
 
==Objektoj==
 
Objektoj aperas en la lingvo tre simple. Ĉiu variablo povas ekhavi anojn, post ĉi tio ĝi estos objekto:
 
<sourcesyntaxhighlight lang="javascript">
g={};
g.nomo=1
</syntaxhighlight>
</source>
 
Sama senco:
<sourcesyntaxhighlight lang="javascript">
g={nomo:1}
</syntaxhighlight>
</source>
Vi vidas objekton kun unu ano: <code>nomo</code>. Se vi provos akiri, ekzemple, <code>g.agho</code>, komputilo respondos "<code>undefined</code>" (nedifinita), sed ne "<code>null</code>" (malplena).
 
Linio 77 ⟶ 73:
# <code>g["nomo"]</code>
Dank'al la dua vojo oni povas rigardi akiron pri ano de objekto kiel funkcion, kies argumentoj estas la objekto kaj nomo de la ano:
<sourcesyntaxhighlight lang="javascript">
function(g){
for(i in g){
Linio 83 ⟶ 79:
}
}
</syntaxhighlight>
</source>
Krome, la dua vojo permesas uzi kelkajn vortojn por nomi anojn:
<sourcesyntaxhighlight lang="javascript">
ameriko={"suda parto":"Kubo","norda parto":"Usono"};
alert(ameriko["suda parto"]);
</syntaxhighlight>
</source>
Krome, la dua vojo permesas uzi nombrojn por nomi anojn (speciala speco de objektoj, "<code>Array</code>" = tabelo):
<sourcesyntaxhighlight lang="javascript">
teamo=["Johano","Paŭlo","Ringo","Georgo"];
alert(teamo[0]);
</syntaxhighlight>
</source>
Ano de objekto povas esti funkcio. Funkcio povas koni objekton, kies ano ĝi nun estas, per la speciala nomo ''<code>this</code>''.
 
==Regionoj kaj Fermigo==
Rigardu ekzemplon, en kiu funkcio naskiĝis interne de alia funkcio:
<sourcesyntaxhighlight lang="javascript">
v=function(){
var g="Ĝise";
Linio 108 ⟶ 104:
};
v()();
</syntaxhighlight>
</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 Ĝavoskripto permesis al la funkcio, kiun donas la funkcio <code>v</code>, uzi la variablon <code>g</code>. Do laŭ la difino de Ĝ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]]).
Linio 115 ⟶ 111:
 
==Naski objektojn per la vorto ''new''==
 
Kio okazos, se funkcio, kiu uzas la nomon ''<code>this</code>'', estas nenies ano?
La vorto ''<code>this</code>'' signifos novan objekton, kiu naskiĝos pro voko de la funkcio:
<sourcesyntaxhighlight lang="javascript">
virino=function(){
this.vesto="robo";
};
onklino=new virino();
</syntaxhighlight>
</source>
Atingi ĉi tiun objekton oni povas per la speciala vorto ''<code>new</code>'' (por ne konfuzi al rezulto de la funkcio, oni ĝin ne atingas per rekta voko "<code>onklino=virino()</code>", ĉar ĉi tiel oni povas atingi tion, kio lokiĝas post la vorto ''<code>return</code>'', anstataŭ tion, kion signifis la nomo ''<code>this</code>'' interne de la funkcio).
 
Linio 137 ⟶ 132:
#<code>Object</code> = objekto
Ekzemple, ĉiu objekto havas la anon <code>toString()</code>, kaj la primitivaj tipoj ne estas escepto (malkiel Ĝave):
<sourcesyntaxhighlight lang="javascript">
a=3;
alert(a.toString());
</syntaxhighlight>
</source>
 
==Heredi==
Ĉiu funkcio havas anon "prototype", en kiun oni povas meti objekton (ne funkcion!), kies ecojn ĉiuj idoj de la funkcio heredu. Ekzemple:
<sourcesyntaxhighlight lang="javascript">
patrino=new virino();
patrino.okuloj="bluaj";
Linio 154 ⟶ 149:
alert(fratino.okuloj);
//okuloj de fratino estas tiaj, kiaj estas okuloj de patrino ("bluaj")
</syntaxhighlight>
</source>
 
==Referencoj==
{{referencoj}}
<references/>
 
==Vidu ankaŭ==
Linio 163 ⟶ 158:
 
== Eksteraj ligiloj ==
* {{en}} [https://developer.mozilla.org/Special:Tags?tag=JavaScript Altkvalitaj informojInformoj ĉe developer.mozilla.org]
 
{{Bibliotekoj}}
[[Kategorio:JavaScript| ]]