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

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
да............. забавно....
я сделаю несколько предположений,
не судите меня строго.

во прервых, мы оба с тобой правы
это для начала,

второе предположение,
как работаю функции которые вызываются друг из друга,
они не имеюют доступ к локальным переменным друг друга,
они сначала создают локальные переменны копируя их из списка локальных переменных функции caller;

то есть (возьму твой пример)

Код:
o["Nox"] = "Nox is right !";
o["john"] = "john is right !";
function external(param) {
	var p = param;
	var internal = function (msg) {
		/*
			заводятся переменные которые описаны списке аргументов
			
			var msg = arguments[0];
			
			если arguments.caller не null (функция вызвана функцией)
			короче Call Stack
			обратится к списку локальных переменных фунции и скопировать
			их значения
			
			var p = param;
			var internal = arguments.callee;		
		*/ 		
		var test = o[p];
		trace(msg+" :: "+test);
	};	
	return internal;
	/*
		в момент сериализации временной функции,
		создании ее внешней ссылки,
		тот участок памяти который создавал копии внешний переменных
		уже становится постоянным
	*/ 
}
getInternal_1 = external("Nox");
getInternal_2 = external("john");

getInternal_1("What's up ?!");
getInternal_2("What's up ?!");
то есть присуствуют два процесса ......

вот такое предположение,

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


Последний раз редактировалось john; 26.04.2002 в 02:43.