Показать сообщение отдельно
Старый 30.06.2008, 23:19
riden вне форума Посмотреть профиль Отправить личное сообщение для riden Найти все сообщения от riden
  № 389  
Ответить с цитированием
riden
 
Аватар для riden

Регистрация: Jun 2005
Сообщений: 147
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
riden, повторю за остальным, возможно слегка понятнее:
this - пространство относительно которого вызывается функция (никаким образом не связано с "объектом активации функции").
arguments.caller - функция, которая вызвала текущую (вот пространство данной функции и будет "объектом активации функции").
arguments.callee - текущая функция (обычно используется для того, что бы хоть как-то поймать анонимную функцию).
this - указатель на объект активации функции. callee, caller - ссылаются на функции.
Код:
function Class1(a){
this.a=a;
	trace (this); //[object Object] //указатель на obj - экземпляр класса Class1
	function localFunc(){
		this.b=2;
		trace(this); //[type Object] - объект активации функции
		trace(arguments.caller); //[type Function] //- разница налицо
		trace(this.arguments);//аргумент функции внешней
							//это подтверждает что объект активации - внешняя функция (Class1)
		trace(arguments.caller.arguments); //undefined //!
		trace(this.a); //undefined
		trace(this.b); //2
	}
	localFunc();
	//this.met = localFunc;
}
//Class1();
var obj = new Class1("аргумент функции внешней");
Код:
function func(){
	trace(this);
	trace(arguments.caller); //null //- :)
}
func();//_level0  //- объект активации
obj = new func();//[object Object] //- объект активации
Можете экземпляр класса (функции) obj называть "пространством вызова функции", но это объект, _level0 - тоже объект, и функция ([type Object]) - тоже объект.
__________________
видеоигры - высший вид искусства


Последний раз редактировалось riden; 01.07.2008 в 04:34. Причина: back to original