Цитата:
Сообщение от chingachgoog
Ну и где тут противоречие? Вложенная функция имеет свой объект активации. Но добраться до него мы не можем. Зато у нас есть указатель this этой вложенной функции, который указывает на объект, методом которого является функция - т.е. объект активации ВНЕШНЕЙ функции оболочки. Именно объект активации ВНЕШНЕЙ функции оболочки, ты и разбирал for in c ASsetPropFlags. Соответственно у этого объекта активации ВНЕШНЕЙ функции-оболочки есть свой указатель this, указывающий на объект, чьим методом является ВНЕШНЯЯ функция-оболочка.
Т.е. твои доводы, что вложенная функция своим this не указывает на объект активации ВНЕШНЕЙ функции-оболочки, оказались ошибочными.
|
Ты не верно истолковываешь что такое объект активации. Object и объект активации это совсем разные вещи.

Код:
function b () {
trace ("\tb:" + (this instanceof Object));
function c () {
trace (this);
z = this;
trace ("\t\t\t" + (this instanceof Object));
}
c ();
}
trace ("E")
e = new b ();
trace ("\tz:" + (z instanceof Object));
trace ("R")
r = b ();
trace ("\tz:" + (z instanceof Object));
trace ("Z")
setTimeout (b, 10);
setTimeout (function () {
trace (z);
trace ("\tz:" + (z instanceof Object));
}, 20);

Код:
E
b:true
[type Object]
false
z:false
R
b:true
[type Object]
false
z:false
Z
b:false
[type Object]
false
[type Object]
z:false
А ты знаешь, что любой объект наследуется от Object