Повече информация за веригата в JavaScript
Тук генерира динамично събитие манипулатор манипулатор използва targetId на външни функции за достъп до елемента.
Ако искате да се рови по-дълбоко и да разберем малко по-дълго ..
Но за да се разбере и да използва веригата, е достатъчно да се разбере вътрешната изработки на функции, поне в този, понякога опростена форма.
Всеки изпълнение на магазини функционални всички променливи в специален дом, с кодово име [[обхват]], което не може да бъде получено изрично, но това е.
Всяка покана Var. - Просто се създаде нов имот на обекта, както и всяко позоваване на една променлива - на първо място се търси в свойствата на този обект.
Такъв е вътрешната структура на "обхват" - обикновен обект. Всички промени са локални променливи са промените в свойствата на косвения обекта.
Обикновено, след като функцията завърши изпълнението си, неговия обхват [[обхват]]. т.е. целия набор от локални променливи е убит.
Цялостното изпълнение на потока е както следва:
Между другото, за кода извън функция (и всички глобални променливи) като контейнер на произведенията обект [] [] обхвата на прозорец.
Това се дължи на това, от вътрешна функция, можете да получите на променливите на външната функция - чрез връзка по своя [[обхват]]. На първо място, ние търсим най-, а след това - във външната [[поле]] - и така нататък, докато веригата на прозорец.
Верига - когато обектът е локална променлива [[обхват]] външен функция остава жив след неговото завършване.
Вътрешната функция може да се отнася към него по всяко време и да получават променлива от външната функция.
Така например, анализ на функцията на работа, в която са манипулатори на събитието:
При стартиране на функцията, всичко се случва като стандарт:
- създаден от [[обхват]]
- там се записват локални променливи
- вътрешната функция получава позоваване на [[обхват]]
Но в крайна сметка - с функция за вътрешен назначен sourceNode.onclick. Външно функция е приключила своята работа, но от вътрешната страна - може да започне по някое време по-късно.
Вместо това, той просто оставя цялата [[поле]] външна функция жив.
Така че, когато се стартира вътрешна функция, ако изведнъж не намира променлива във вашата [[обхват]] - това може да се отнася до [[обхват]] външна функция и щеше да го намери там.
Ако външният функция е създаден в друг (по външна) функция - във веригата добавя един консерви [[обхват]] и така - до прозореца на глобалната област.
В този пример, външен функция makeShout () създава вътрешна вик ().
вик () функция за правата на вътрешната функция има достъп до променлива фраза. Каква стойност тя ще донесе - първият или вторият?
- Вътре makeShout ()
- създаден от [[обхват]]
- През [[обхват]] е писано: израза = "с потребителско име!"
- В [[обхват]] е писано: вик = .. функция ..
- вик получава позоваване на [[обхват]] външен функция
- [[Обхват]]. Фраза се променя с новата стойност на "Браво!"
- Когато вик () старт
- Създай свой собствен обект [[scope2]]
- Търсеното израза в [[scope2]] - не е намерен
- Търсена фраза в [[обхват]] външна функция - Намерени стойност "Готово!"
- предупреждение ( "Край!")
Това означава, че вътрешната функция получава последната стойност на външните променливи.
addEvents функция може да отнеме масив от Разделение е и поставя всеки, сключени с техните номера на OnClick.
На въпроса "Защо е не работи?" хората обикновено започват изучаването на вериги.
За всеки отделен тест, за да се направи е 10 цветни номерирани Разделение с различни цветове:
Бутона по-долу ще създаде 10 Divs и да ги доведе до addEvents
Ако poklikat на divs - всички те дават един и същ сигнал.
Такъв дефект произлиза от факта, че всички функции DIV [I] .onclick получават стойността и от един до всички [[обхват]] външен функция. Тази стойност ([[обхват]]. I) по време на активиране OnClick -obrabotchika равна на 10 (цикъл приключи веднага и == 10).
Всичко това е в ред, специален метод се използва в такива случаи - разпределението на [[обхват]]. Следната функция работи правилно. Всичко е едно и също, с изключение на div.onclick.
Сега всичко, което трябва да е в ред - всеки Разделение дава сигнал на вашия номер.
За да присвоите div.onclick тече в момента функция функция (х). получаване аргумент х, и връща процесор, което отнема от х [[обхват]] на функцията време.
Влизане се използва за създаване на функция, а след това (и) - да се започне с аргумента аз.
функция на времето функция (х) незабавно да спре работа, оставяйки ви [[обхват]] истинската стойност на х. равен на текущия цикъл и променлива.
Когато се активира манипулатор - сигнал воля на [[обхват]] близкия външен функция х правилната стойност.
Идеята е, че тези примери трябва да бъдат достатъчни за разбирането и практически схеми за кандидатстване.
SAPE усложняват нещата?
MainLink - прости и рентабилни продажби връзки!
Минете през гората ... Дъжд, вятър, замръзване цяла нощ ... ... аз гледам - колата е на стойност, идвам, гледам през прозореца - няма никой. Опитах се на вратата - отворена, така че аз се качи и да седне ... изведнъж колата отиде! Аз съм в шок ... колата върви, аз съм назад седне зад волана на един ... след това на ръка Космат появи от някъде, направляват и изчезна ... Аз имам коса на свещеника започна да се движи ... тогава се появи едно село, тук като у дома си първи ... след това колата спря, купето човек гледа и казва:
- Че и вие правите тук.
- Да тук, храната ...
- ах ** бъде лесно. Натискам и той е *** ще!
Работещи приложения на един X-сървър
Текущи игри в отделен сървър например X Warcraft