Classes as dynamic objects

by Glidias
Dumping nonsense variables to any AS3 Class....How classes can act as a dynamic global class object to store any variables you wish....without having to instantiate 'em.
♥0 | Line 36 | Modified 2014-05-06 17:32:53 | MIT License
play

ActionScript3 source code

/**
 * Copyright Glidias ( http://wonderfl.net/user/Glidias )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ysHZ
 */

package {
    import flash.display.Sprite;
    import flash.display.DisplayObject;
    import flash.text.TextField;
    
    public class ClassesAreDynamicObjects extends Sprite {
        
        private static var PRIVATE_VAR:Number = 999;
        
        public function ClassesAreDynamicObjects() {

            var field:TextField = new TextField();
            field.autoSize = "left";
            addChild(field);
            
            
            TheUltimateStaticSingletonDynamicObject["myProp"] = 131313;
            Sprite["MyIdioticProperty"] = 44234;
            DisplayObject["aabbcc"] = 13;
            ClassesAreDynamicObjects["abc"]= 111;
            field.text = "Classes are dynamic objects? " + Sprite["MyIdioticProperty"] + ", "+DisplayObject["aabbcc"]+ ", "+ClassesAreDynamicObjects["abc"];
           
         
           var anonymous:* = ClassesAreDynamicObjects;
            anonymous["PRIVATE_VAR"] = 123;  // it seems the compiler doesn't treat anonymous as really anonmous under this scope, writing to my own private namespace
            field.appendText(",\n"+ClassesAreDynamicObjects["PRIVATE_VAR"]+", "+PRIVATE_VAR + "<- LOl. what the heck. I replaced my own private static var PRIVATE_VAR");
                  
          
          //
          AClassOutsidePackage["DONT_TOUCH_ME"] = 123;
          field.appendText(",\n"+AClassOutsidePackage["DONT_TOUCH_ME"]+", " +  (new AClassOutsidePackage()).dontTouchMe +"<- Ok, it's differnet now for DONT_TOUCH_ME");
            
            field.appendText("\n\nClasses are intrinsically dynamic objects on public namespace. \nTheir instances aren't, unless 'dynamic' keyword is used. ");
        }
    }
}


class AClassOutsidePackage {
    private static var DONT_TOUCH_ME:Number = 999;
    public var dontTouchMe:Number;
    public function AClassOutsidePackage() {
        
        dontTouchMe = DONT_TOUCH_ME;
    }

}


class TheUltimateStaticSingletonDynamicObject {
    public function TheUltimateStaticSingletonDynamicObject() {
        throw new Error("I cannot be instantiated!");
    }
}

Forked