Object.__resolve()
Juten Tach,
mann, also dieses Actionscript 2.0 …
Da gibt es ja jetzt dieses neue Object.__resolve() seit Actionscript 2.0. Übrigens, gar nicht erst anfangen, in der Flash Doku nachzuschauen, das wird nur in den livedocs dokumentiert, vorerst.
Also kurz zusammengefasst, __resolve ist eine Art catchAll für Objekte. Ihr kennt das von catchAll E-Mail Postfächern, wo man irgendwas@meineDomain.com schreiben kann und es kommt immer an. Das gleiche Prinzip kann man hier mit Funktionen machen. Man kann man nun in einem Objekt eine Funktion __resolve() definieren, die dann immer aufgerufen wird, wenn jemand eine Funktion oder ein Attribut über dieses Objekt aufrufen will, die dieses Objekt gar nicht besitzt.
Soweit so gut. Nun kam mir gleich der Gedanke: “Cool, dann kann ich ja unerlaubte Methoden- oder Attributzugriffe prinzipiell auch zur Laufzeit abfangen und einen Fehler werfen.” Denn das tolle ist, selbst wenn jemand sowas schreibt wie:
meineInstanz["falscheVariable"]
erkennt das Flash und ruft ebenfalls __resolve() auf. Geschummle ist also nicht mehr möglich.
Dachte ich. Aber weit gefehlt. Wenn man
meineInstanz["falscheVariable"];
schreibt, wird zwar __resolve() aufgerufen, wenn man aber ganz frech eine Zuweisung macht, z.B.
meineInstanz["falscheVariable"] = "Hallo";
dann wird __resolve() nicht aufgerufen. Die Variable wird dann einfach erzeugt.
Damit kann man also immer noch zur Laufzeit mogeln und einer an sich nicht dynamic deklarierten Klasse Variablen zuschieben.
Schade eigentlich.

Och mensch, wieder sone gut gemeinte Sache die wieder nur halb funktioniert von MM. Wieso können die das nicht mal ordentlich machen
Ist ECMA-Script dazu nicht in der Lage? Woran das wohl wieder liegt…