Показать сообщение отдельно
Старый 07.04.2007, 03:33
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Т.к. это AS1, то объявлять функции в таком виде не есть криминал и просто нужно вместо mc использовать this.

Можно себе представить вот такой вот бардак:

Код:
a();
x = function () {
	trace('x() called');
};
function a() {
	trace('a() '+this);
	link = this;
	function b() {
		trace('b() '+this+','+link);
		function c() {
			trace('c() '+this);
		}
		c();
	}
	d = function () {
		trace('d() '+this);
		e = function () {
			trace('e() '+this+', d: '+this.d);
		};
		e();
	};
	f = function () {
		trace('f() '+this);
		var g = function () {
			trace('g() '+this+','+this.self);
		};
		g.prototype.self = this;
		g();
		new g();
	};
	b();
	d();
	f();
	h = {};
	h.e = e;
	trace('h.e: '+(h.e === e));
	h.e();
	trace('c: '+c);
	c();
	trace('x: '+x);
	x();
}
trace('Functions: '+[a, b, c, d, e, f, g, h, x]);
Кто на кого ссылается здесь ещё в принципе нормально (вот h.e() уже ссылается не туда, куда думается), а вот довольно забавный момент с «x» (ну это, правда, не относится конкретно к областям видимости, но забавно). Когда я вижу подобный код, я просто закрываю исходник и все.


Последний раз редактировалось etc; 07.04.2007 в 03:42.