Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Напомните, чем страшны вложенные функции (http://www.flasher.ru/forum/showthread.php?t=140089)

orcpochta 20.05.2010 02:08

Напомните, чем страшны вложенные функции
 
и почему нежелательно их использовать, а то я не могу найти тему, где это обсуждалось.

nOobCrafter 20.05.2010 02:53

имхо наиболее очевидно то что от ниих нельзя \ сложно отписаться...

i.o. 20.05.2010 02:59

wvxvw и BlooDHounD просвещены по этой теме. Полистайте их сообщения, там и найдете ответ.

BlooDHounD 20.05.2010 03:22

http://www.flasher.ru/forum/showpost...77&postcount=7
http://www.flasher.ru/forum/showpost...4&postcount=19

Котяра 20.05.2010 09:53

тут много:http://www.flasher.ru/forum/showthread.php?t=139847

orcpochta 20.05.2010 12:03

Цитата:

Сообщение от BlooDHounD (Сообщение 909481)
http://www.flasher.ru/forum/showpost...77&postcount=7
http://www.flasher.ru/forum/showpost...4&postcount=19

4. у них плавающий объект активации.
Код AS3:

function test():Function {
        trace( '1', this );
        return function() {
                trace( '2', this );
        }
}
 
test()();
// 1 [object MainTimeline]
// 2 [object global]
 
var f:Function = test();
f();
// 1 [object MainTimeline]
// 2 [object MainTimeline]
 
var o = {};
test.call( o );
f.call( o );
//1 [object MainTimeline]
//2 [object Object]

афигенные результаты!

ну тут все логично и ожидаемо:
1 тест - должна же ф-ия где-то создаваться - вот и создается в глобале (ее ни к чему не привязали, в том смысле, что анонимные ф-ии вещают от глобала, если их ни с чем не законтачить)
2 тест - ф-я у вас несвязанная => this ссылается на тот объкт, из которого вызывается
3 тест - вы вызываете разные ф-ии test и test() - первая навсегда связанная с [object MainTimeline], вторая несвязанная, налету повешенная на объект o

так что все результаты здесь ожидаемы и странно было бы, если бы они были другими

BlooDHounD 20.05.2010 12:29

orcpochta, спасбо кэп. только ожидаемо где? внутри функции, которая не знает как её вызовут? или ожидаемо для меня? я само собой знал, какие результаты получу.

orcpochta 20.05.2010 12:59

Цитата:

Сообщение от BlooDHounD (Сообщение 909531)
orcpochta, спасбо кэп.

Всегда к Вашим услугам! Искренне Ваш. К.О. :D

fljot 20.05.2010 13:31

Кстати, загляните в сорсы OSMF и ужаснитесь.

orcpochta 20.05.2010 15:04

есть ли способ узнать кто связующий объект у ф-ии?

например, в метод передается ф-ия в качестве аргумента - эта ф-ия может быть как связанная, так и не связанная

как определить какой у нее связующий объект в теле метода, в который она передана?

поиграть с describeType?


Часовой пояс GMT +4, время: 15:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.