Это встроенная модель событий (уровень DOM 0), поэтому будут использоваться только переменные, определенные в контексте ее выполнения.
Следующий раздел
ping = new Object;
ping.test = '1234';
находится в своем собственном контексте выполнения, когда интерпретатор просматривает страницу. Код в глобальной области видимости будет использовать глобальный объект через this
.
Но здесь
<a href="#" onclick="alert(ping.test);">Test</a>
является отдельным выполнением, которое ваш браузер рассматривает как анонимную функцию. С использованием
<a href="#" onclick="alert(this);">Test</a>
Не приведет к тому, что мы хотим. Строка видит window
, this
на самом деле используется для текущего объекта, с которым работает встроенный обработчик событий.
Таким образом, ping не определяется в этом контексте, если только мы не позволим его увидеть, обратившись к window
.
<a href="#" onclick="alert(window.ping.test);">Test</a>
Теперь, когда браузер запустится, он возьмет глобальную переменную window
, которая в контексте (\script\) будет такой же, как this
, и будет иметь доступ к ping.test.
Видно в следующих браузерах
- Google Chrome Mac 12.0.742.112
- Safari версии 5.0.5 (6533.21.1)
- Firefox Mac 3.6.18
Ссылки
Документы Mozilla: это ключевое слово
Dom Events: встроенная модель
person
phwd
schedule
08.07.2011