![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Узнайте, что такое «область видимости».
|
|
|||||
|
__etc, при всем моем уважении, но помощь у вас неважная.
Цитата:
Последний раз редактировалось Волгоградец; 09.06.2008 в 16:59. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
this — это ссылка на самого себя. При передачи области видимости метод будет выполнен в ней. Если область не указана, то метод будет выполнен в анонимной области видимости.
p.S. В помошники я и не записывался. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нет, у этой области видимости вообще нет this, это не _root и не Object.
|
|
|||||
|
Modus ponens
|
в этом можно легко убедиться =)
setTimeout.someVar = 'foo';
var i:Number = setTimeout(someFunc, 100);
function someFunc():Void {
trace(this); //undefined
trace(this.someVar); //undefined // this не указывает на setTimeout
trace(arguments.callee.someVar); //bar // arguments.callee указывает на someFunc
trace(arguments.caller.someVar); //undefined // arguments.caller не указывает на setTimeout
}
someFunc.someVar = 'bar';
__________________
Hell is the possibility of sanity |
|
|||||
|
Я в замешательстве... Почему вот так вообще не выполняется код:
В данном случае this ссылается на объект, который активировал код. Согласно цепочке областей видимости компилятор ищет этот объект вне функции - получается, в setTimeout(). Там не находит и поднимается выше - а это уже _root. Почему же тогда ничего не выполняется? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Надо передавать название метода в объекте, а не ссылку на этот метод.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:23. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|