Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 02.07.2008, 16:06
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 11  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от chingachgoog Посмотреть сообщение
если хотите разобраться с объектами активации посмотрите посты 408 и 410.
Ну давай. Смотрим пост 410, а именно его часть
Цитата:
А this указывает на объект активации только в том случае, если функция вложена (тогда this из вложенной функции указывает на объект активации функции-оболочки)
привожу следующий код (смотреть с компиляцией под 6-ый плеер)
Код:
cx = 1;
function a () {
}
function b () {
	function c () {
		ASsetPropFlags (this, null, null, 1);
		for (var i in this) {
			trace ("\t" + i + " = " + this[i]);
		}
	}
	trace ((cx++) + ".");
	a.d = c;
	c ();
	trace ((cx++) + ".");
	a.d ();
}
b ()
new b ();
setTimeout (b, 1000);
он выдает следующее
Код:
1.
	c = [type Function]
	arguments = 
	this = _level0
2.
	d = [type Function]
	prototype = [object Object]
	__proto__ = [object Object]
	constructor = [type Function]
3.
	c = [type Function]
	super = [object Object]
	arguments = 
	this = [object Object]
4.
	d = [type Function]
	prototype = [object Object]
	__proto__ = [object Object]
	constructor = [type Function]
5.
	c = [type Function]
	super = [type Function]
	arguments = 
	this = 
6.
	d = [type Function]
	prototype = [object Object]
	__proto__ = [object Object]
	constructor = [type Function]
Особенно интересен пункт 5. Функция вложена, this есть и должен указывать на объект активации, а он показывает undefined (хотя там пустота, надо помнить, что в 6-ом плеере undefined не выводится в трейс, если в трейсе есть еще что-то). То есть, свойства объекта активации есть, а самого объекта нет! Это и доказывает, что this не ссылается на объект активации, о чем было заявлено в посте 410.

Дополнение, наткнулся на пост в блоге Нокса. Там он цитирует спецификацию ECMA-262
Цитата:
The activation object is purely a specification mechanism. It is impossible for ECMAscript program to access the activation object. It can access members of the activation object, but not the activation object itself.

Объект активации функции - это внутренний механизм спецификации. Программа на ECMA-скрипте не может получить доступ к объекту активации функции, но может получить доступ к его свойствам. К свойствам, но не к самому объекту активации.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему   Часовой пояс GMT +4, время: 07:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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