Показать сообщение отдельно
Старый 02.07.2008, 22:53
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 438  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от 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
__________________
(и)Нильс.ru | Плагины для FlashDevelop