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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 26.04.2002, 14:42
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 31  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Нет, всетаки

если arguments.caller не null (функция вызвана функцией)
короче Call Stack
обратится к списку локальных переменных фунции и скопировать
их значения

var p = param;
var internal = arguments.callee;


полная чушь,
ведь:

Код:

function a () {
	var aaa = "first"
	b()
	trace(aaa)
}
function b () {
	trace(aaa)
}
a()
ведь функция b не видит локальных переменных вызвавшей ее функции.....

думаю ты прав, но все равно не хватает полной картины.

видимо конструктор функции создает экземпляр функции в момент вызова функции в которой конструктор прописан как локальная переменная и создание внешней ссылки на конструктор,

Код:
o["Nox"] = "Nox is right !";
o["john"] = "john is right !";
function external() {
	var p = "Nox";

	var internal = function (msg) {		
		var test = o[p];
		trace(msg+" :: "+test);
	};
	
	internal()// при первом вызове вызывается конструктор функции "internal" и подствляет значени "Nox"
	p = "john";
	internal()// при втором вызове конструктора функции подставляется "john"
	return internal; // подставилось "john"
}

getInternal = external("Nox");
getInternal("What's up ?!");
думаю примерно так,

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

пример,

Код:
o["Nox"] = "Nox is right !";
o["john"] = "john is right !";
function external(param) {
	var p = param;
	var internal = function (msg) {		
		var test = o[p];
		trace(msg+" :: "+test);
		return arguments.callee
	};
	return internal;
}

getInternal_1 = external("Nox");
getInternal_2 = external("john");

trace("функции равны? : "+(getInternal_1==getInternal_2))
"конструктор" создает функцию в момен вызова его как функции, и в момент обращения из функции где конструктор прописан как локальная переменная.

как бы так,


Последний раз редактировалось john; 26.04.2002 в 14:43.
Создать новую тему   Часовой пояс GMT +4, время: 17:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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