Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-12-2011, 10:59   #1 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Closures vs. Function.apply();

Moin!

Ich baue gerade so eine Art EventDispatcher (Logger), an dessen add-Methode Funktionen übergeben werden können. Beim späteren Dispatch werden diese dann per *.apply(); aufgerufen, jedoch brauche ich dafür ein this Object, da die Funktion sonst global ausgeführt wird. Ich hätte natürlich gerne jeweils das Objekt als this, über welches zuvor die add-Funktion aufgerufen wurde.

Kommt man da irgendwie dran (Außer this-Parameter in der add Funktion)?
Oder muss ich auf apply verzichten und einen Riesenswitch bauen?
T.Decay ist offline   Mit Zitat antworten
Alt 09-12-2011, 12:17   #2 (permalink)
JoH
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 99
Kannste mal nen bisschen code dazu zeigen?
__________________
http://blog.johannes-hodde.com
JoH ist offline   Mit Zitat antworten
Alt 09-12-2011, 12:19   #3 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
zeig bitte etwas Code, ich kann dir nicht so recht folgen.

wenn du bei apply kein thisObject angibst, ist this doch automatisch das Objekt, in dem die Funktion definiert ist.
Nur closures && dynamische Funktionen sind in keinem Objekt definiert, und deshalb zeigt this auf ein globales Objekt (Stage glaub ich).
Also was ist das Problem? wie sieht der Code aus? und was soll passieren?
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 09-12-2011, 13:44   #4 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Zitat:
Zitat von thomas_E Beitrag anzeigen
... Nur closures && dynamische Funktionen sind in keinem Objekt definiert, und deshalb zeigt this auf ein globales Objekt (Stage glaub ich).
Ah, alles klar! Ich hatte das allgemeine Verhalten von apply() nur auf die Schnelle per trace aus einer nachträglich zugewiesenen Funktion eines einfachen MovieClips ausprobiert, die ist dann natürlich dynamisch. *FP

this ist in dem Fall übrigens nicht die Stage sondern lt. trace '[object global]'

Großes Danke!

Für alle Verwirrten Mitlesenden, hier noch der Code um den es ging und der trotz meiner Bedenken einwandfrei funktioniert, wenn man ??? durch null ersetzt.

Code:
class myLogger {
	
	private static var _traceListeners:Vector.<Function> = new Vector.<Function>();

	private static function dispatchTrace(...args:Array) :void
	{
		var i:int;
		var len:int = _traceListeners.length;
		for (i = 0; i < len; i++) {
			_traceListeners[i].apply(???, args);
		}
	}
		
	public static function addTraceListener(listener:Function) :void
	{
		if (!(listener is Function)) return;
		var i:int;
		var len:int = _traceListeners.length;
		for (i = 0; i < len; i++) {
			if (_traceListeners[i] == listener) return;
		}
		_traceListeners.push(listener);
	}
	
	public static function removeTraceListener(listener:Function) :void
	{
		if (!(listener is Function)) return;
		var i:int;
		var len:int = _traceListeners.length;
		for (i = 0; i < len; i++) {
			if (_traceListeners[i] == listener) {
				_traceListeners.splice(i, 1);
				return;
			}
		}
	}

}
T.Decay ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JSLint: Be careful when making functions within a loop. Consider closures TinKim JavaScript & jQuery 1 01-07-2008 10:34
Method closures Aufklärung bitte Samuel ActionScript 2 0 01-11-2006 16:36
function mit apply und Parametern Jekill Flash MX 2 19-04-2005 14:58
function -> function load-> function onLoad XML -> function return flobee Flash mit XML und Webservices 2 26-07-2003 12:16
Function.prototype.getSingleton -> apply und trotzdem Treppen laufen? hOk Softwarearchitektur und Entwurfsmuster 8 03-02-2003 21:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele