Цитата:
Сообщение от iNils
Ну давай.
...
привожу следующий код (смотреть с компиляцией под 6-ый плеер)
|
Это изначальная ошибка. Дело не в компиляции под 6-й плеер, а в наличии самого 6-го плеера. Просто, начиная с 7-го ФП объект активации перевели на быстрые регистры и он стал практически недоступен (по крайней мере для for in с ASsetPropFlags). Разумеется это было сделано не для того чтобы "прикрыть лавочку" или "не повадно было".
Т.е. если ты хочешь протестить свой код, то найди 6-й флеш-редактор (тот что MX) и протести там.
Цитата:
Сообщение от iNils
Объект активации функции - это внутренний механизм спецификации. Программа на ECMA-скрипте не может получить доступ к объекту активации функции, но может получить доступ к его свойствам. К свойствам, но не к самому объекту активации.
|
Вообще можно, в том же ФП6. Достаточно дать ссылку на объект активации и он будет жить вечно
add:

Код:
function b () {
function c () {
trace(this)
z=this
}
c ();
}
b ()
trace(z)
ASsetPropFlags (z, null, null, 1);
for (var i in z) {
trace ("\t" + i + " = " + z[i]);
}
Получаем:

Код:
[type Object]
[type Object]
c = [type Function]
arguments =
this = _level0
И ничего удивительного тут нет. Реальный this функции "с" показывает, как и ожидается на объект активации функции "b".
А этот объект активации (функции "b", а не "с"!) содержит в себе указатель this, куда? Правильно, на рут - тот объект, чьим методом является функция "b".