Повече информация за веригата в JavaScript

Тук генерира динамично събитие манипулатор манипулатор използва targetId на външни функции за достъп до елемента.

Ако искате да се рови по-дълбоко и да разберем малко по-дълго ..

Но за да се разбере и да използва веригата, е достатъчно да се разбере вътрешната изработки на функции, поне в този, понякога опростена форма.

Всеки изпълнение на магазини функционални всички променливи в специален дом, с кодово име [[обхват]], което не може да бъде получено изрично, но това е.

Всяка покана Var. - Просто се създаде нов имот на обекта, както и всяко позоваване на една променлива - на първо място се търси в свойствата на този обект.

Такъв е вътрешната структура на "обхват" - обикновен обект. Всички промени са локални променливи са промените в свойствата на косвения обекта.

Обикновено, след като функцията завърши изпълнението си, неговия обхват [[обхват]]. т.е. целия набор от локални променливи е убит.

Цялостното изпълнение на потока е както следва:

Между другото, за кода извън функция (и всички глобални променливи) като контейнер на произведенията обект [] [] обхвата на прозорец.

Това се дължи на това, от вътрешна функция, можете да получите на променливите на външната функция - чрез връзка по своя [[обхват]]. На първо място, ние търсим най-, а след това - във външната [[поле]] - и така нататък, докато веригата на прозорец.

Верига - когато обектът е локална променлива [[обхват]] външен функция остава жив след неговото завършване.

Вътрешната функция може да се отнася към него по всяко време и да получават променлива от външната функция.

Така например, анализ на функцията на работа, в която са манипулатори на събитието:

При стартиране на функцията, всичко се случва като стандарт:

  1. създаден от [[обхват]]
  2. там се записват локални променливи
  3. вътрешната функция получава позоваване на [[обхват]]

Но в крайна сметка - с функция за вътрешен назначен sourceNode.onclick. Външно функция е приключила своята работа, но от вътрешната страна - може да започне по някое време по-късно.

Вместо това, той просто оставя цялата [[поле]] външна функция жив.

Така че, когато се стартира вътрешна функция, ако изведнъж не намира променлива във вашата [[обхват]] - това може да се отнася до [[обхват]] външна функция и щеше да го намери там.

Ако външният функция е създаден в друг (по външна) функция - във веригата добавя един консерви [[обхват]] и така - до прозореца на глобалната област.

В този пример, външен функция makeShout () създава вътрешна вик ().

вик () функция за правата на вътрешната функция има достъп до променлива фраза. Каква стойност тя ще донесе - първият или вторият?

  1. Вътре makeShout ()
    1. създаден от [[обхват]]
    2. През [[обхват]] е писано: израза = "с потребителско име!"
    3. В [[обхват]] е писано: вик = .. функция ..
    4. вик получава позоваване на [[обхват]] външен функция
    5. [[Обхват]]. Фраза се променя с новата стойност на "Браво!"
  2. Когато вик () старт
    1. Създай свой собствен обект [[scope2]]
    2. Търсеното израза в [[scope2]] - не е намерен
    3. Търсена фраза в [[обхват]] външна функция - Намерени стойност "Готово!"
    4. предупреждение ( "Край!")

Това означава, че вътрешната функция получава последната стойност на външните променливи.

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