Mai multe informații despre circuitul în JavaScript

Aici generat dinamic handler de tratare a evenimentului utilizează targetid funcțiilor externe pentru a accesa elementul.

Dacă doriți să aprofundați mai adânc și să înțeleagă un pic mai mult ..

Dar pentru a înțelege și de a folosi circuitul, este suficient pentru a înțelege funcționarea internă a funcțiilor, cel puțin în acest, uneori sub formă simplificată.

Fiecare executie a magazinelor funcția toate variabilele într-o facilitate speciala, cu numele de cod [[domeniul]], care nu pot fi obținute în mod explicit, dar este.

Fiecare apel var. - a crea doar o nouă proprietate a obiectului, precum și orice referire la o variabilă - în primul rând a căutat în proprietățile acestui obiect.

Aceasta este structura internă a „domeniului de aplicare“ - un obiect oarecare. Toate modificările sunt variabile locale sunt modificări ale proprietăților obiectului implicit.

De obicei, după ce funcția a terminat executarea, domeniul de aplicare [[obiectul]] ei. adică întregul set de variabile locale este ucis.

Performanța generală a fluxului este după cum urmează:

Apropo, pentru codul în afara funcției (și toate variabilele globale) ca containerul obiectului [[obiectul]] Efectuează de fereastră.

Aceasta se datorează acest lucru de la o funcție internă, puteți obține variabilele funcției exterioare - printr-un link pe [[domeniul]] său. În primul rând, ne uităm la, și apoi - în exterior [[domeniul de aplicare]] - și așa mai departe până când lanțul de fereastră.

Circuit - atunci când obiectul este o funcție externă locală variabilă [] [domeniu de aplicare] rămâne viu după finalizarea acesteia.

Funcția interioară se poate referi la ea în orice moment și de a primi o variabilă a funcției exterioare.

De exemplu, analiza funcția de lucru, care stabilește Stivuitoare eveniment:

Atunci când este pornit funcția, totul se întâmplă ca standard:

  1. creat de [[domeniu]]
  2. sunt înregistrate variabile locale
  3. funcția interior devine o referire la [[domeniu]]

Dar, în cele din urmă - o funcție internă atribuită sourceNode.onclick. Funcția externă a terminat activitatea, dar in interior - ar putea începe cândva mai târziu.

In schimb, el lasă pur și simplu întregul [[sfera]] funcție externă în viață.

Așa că, atunci când este pornit funcția interioară, în cazul în care dintr-o dată nu găsește nici o variabilă în [[domeniul]] - s-ar putea referi la [[] domeniu de aplicare] funcția externă și l-ar fi găsit acolo.

Dacă funcția externă a fost creată în interiorul unei alte funcții (mai mult extern) - în lanțul adaugă unul conserve [[domeniul]] și așa mai departe - la fereastra zona globală.

În acest exemplu, funcția makeShout externă () creează un țipăt intern ().

strigăt () funcția privind drepturile funcției de interior are acces la fraza variabilă. Ce valoare va aduce - primul sau al doilea?

  1. În interiorul makeShout ()
    1. creat de [[domeniu]]
    2. În [[domeniul]] este scris: fraza = „cu numele de utilizator!“
    3. În [[domeniu]] este scris: strigăt = .. funcție ..
    4. strigăt devine o referire la [[domeniul]] Funcția externă
    5. [[Domeniul]]. Fraza este schimbat la noua valoare a „făcut!“
  2. Când strigăt () Start
    1. Creați propriul obiect [[scope2]]
    2. Expresie căutată în [[scope2]] - nu a fost găsit
    3. Expresie căutată în [[domeniul]] Funcția externă - a găsit valoarea „Done!“
    4. alert ( "Finalizare!")

Adică, funcția interior devine ultima valoare a variabilelor externe.

Funcția addEvents ia o serie de div lui și pune fiecare încheiat numerele lor pe onclick.

La întrebarea „De ce nu merge?“ oamenii de obicei, începe circuite de învățare.

Pentru un caz test pentru a face „s 10 div numerotate colorate cu culori diferite:

Butonul de mai jos va crea 10 Divs și le provoca addEvents

Dacă poklikat pe divuri - toate acestea dau aceeași alertă.

O astfel de eroare provine din faptul că toate funcțiile div [i] .onclick primi valoarea I de la unu la toate [[] domeniu de aplicare] funcția externă. Această valoare ([[domeniu]]. I), în momentul activării onclick -obrabotchika egală cu 10 (ciclu încheiat în curând i == 10).

Că totul a fost în ordine, o metodă specială este utilizată în astfel de cazuri - alocarea [[domeniul]]. Funcția următoare funcționează corect. Este la fel, cu excepția div.onclick.

Acum totul ar trebui să fie în ordine - fiecare div oferă alerte pe numărul.

Pentru a atribui funcția div.onclick funcția timp de rulare (x). primind un argument x și returnează procesorul, care preia de la x [[domeniu]] a funcției de timp.

Intrarea este utilizat pentru a crea o funcție, și apoi (i) - pentru a începe cu argumentul i.

Funcția funcția Time (x) opriți imediat activitatea, lăsând dvs. [[domeniul]] valoarea corespunzătoare a x. egală cu curent bucla variabila i.

Atunci când un handler este activat - va alerta de [[domeniul]] cea mai apropiată funcție externă x valoarea corectă.

Ideea este ca aceste exemple ar trebui să fie suficient pentru înțelegerea și circuitele practice de aplicare.

SAPE complica lucrurile?

MainLink - un simplu și profitabile link-uri de vânzare!

Du-te prin pădure ... ploaie, vânt, îngheț toată noaptea ... ... mă uit - mașina este în valoare, am venit, uita-te pe fereastră - nu este nici unul. Am încercat ușa - deschis, așa că m-am urcat și stau ... dintr-o dată masina a mers! Sunt în stare de șoc ... masina merge, m-am întors stau în spatele volanul unuia ... apoi mână păroasă apare de undeva, pilota si a disparut ... am parul pe preotul a început să se miște ... apoi un sat a apărut, aici acasă, mai întâi ... apoi mașina sa oprit, compartimentul pentru pasageri altele omul arată și spune:
- și tu che aici.
- da aici, mâncarea ...
- Ah ** să fie ușor. Am împinge și el f *** se întâmplă!

Rularea aplicațiilor pe un singur X-server

Rularea jocurilor într-un server separat, de exemplu, X Warcraft