Thank you very much for taking your time to share your knowledge with 
us, Mark,  I really appreciate it.:)

Cheers,

- Marcelo Serpa.

Mark Winterhalder wrote:

>>Where could I find a nice tutorial or just more information about this
>>"mystic" AS1 inheritance stuff? Any book sugestions?
>>    
>>
>
>it's not mystic at all, but the prototype chain. each object (except
>for Object.prototype) has a __proto__ property pointing to another
>object it inherits from. a class instance's __proto__ always points to
>the class' prototype. that prototype in turn has a __proto__ pointing
>to the superclass' prototype, and so on, until you eventually end up
>at Object.prototype.
>
>say you have a class Foo that extends Bar (which inherits directly
>from Object). you create an instance myFoo. then the below are true:
>  myFoo.__proto__ == Foo.prototype
>  Foo.prototype.__proto__ == Bar.prototype
>  Bar.prototype.__proto__ == Object.prototype
>
>therefore also:
>  myFoo.__proto__.__proto__ == Bar.prototype
>  Foo.prototype.__proto__.__proto__ == Object.prototype
>
>and so on.
>
>when you try to read a property of an object (that includes calling a
>method, of course), first the VM checks if your object has that
>property. if not, it checks its __proto__, then the __proto__'s
>__proto__ until it either finds that property or it ends up at
>Object.prototype, at which point your instance's __resolve method will
>be called (if it exists).
>
>so, instead of
>  var myFoo = new Foo( "bar" );
>
>you could also
>  var myFoo = {};
>  myFoo.__proto__ = Foo.prototype;
>  myFoo.constructor = Foo;
>  myFoo.constructor( "bar" );
>which would be the same thing.
>
>that means you *could* do evil stuff like changing an object's
>inheritance on the fly. if you point myFoo.__proto__ to Bar.prototype
>it won't inherit Foo's properties any more. if you attach a new
>property to Foo.prototype, all existing and future instances of Foo
>will inherit it from then on. however, if you replace Foo.prototype
>with another object, it won't affect previous instances of Foo, since
>their __proto__ still points to the original Foo.prototype object
>(i.e. new Foo() will return instances with different behaviours
>depending on when you instantiate them!). You could also inject a new
>class into the inheritance chain, e.g.:
>  var iLikeToConfuseMyCoworkers = { secretProp: "bet you'll never
>manage to debug this" };
>  iLikeToConfuseMyCoworkers.__proto__ = Bar.prototype;
>  Foo.prototype.__proto__ = iLikeToConfuseMyCoworkers;
>
>so, Johannes' suggestion was to simply
>  myClip.__proto__ = MyClass.prototype;
>
>it's good to know that kind of stuff, imho, because you get some
>insight what happens in the background. to use that knowledge,
>however, almost always isn't the right thing to do, especially if
>others will have to work with your code.
>
>hth,
>mark
>
>
>--
>http://snafoo.org/
>jabber: [EMAIL PROTECTED]
>
>_______________________________________________
>osflash mailing list
>osflash@osflash.org
>http://osflash.org/mailman/listinfo/osflash_osflash.org
>
>  
>

        

        
                
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



_______________________________________________
osflash mailing list
osflash@osflash.org
http://osflash.org/mailman/listinfo/osflash_osflash.org

Reply via email to