Here's my understanding of the reason behind this: AS2 is basically just syntactic sugar over AS1, and gets compiled down to the same thing.
When defining a class you're actually defining things on the prototype, so doing this: -------------- class MyClass { public var myArray:Array; public function MyClass() { myArray = []; } public function push(o:Object):Void { myArray.push(o); } } -------------- would be the same as: -------------- MyClass = function() { this.myArray = []; } MyClass.prototype.push = function(o) { this.myArray.push(o); } -------------- If you set the value of the member variable at declaration: -------------- public var myArray:Array = new Array(); -------------- It turns into this: -------------- MyClass.prototype.myArray = new Array(); -------------- Since you have just assigned an array instance to the prototype of the class, that gets shared between all instances of the class (basically, the value you set there is the initial value given to the myArray member of the class on instantiation). Well, assuming my understanding is correct. :) -Andy On Wed, Mar 12, 2008 at 2:02 PM, Dave Mennenoh <[EMAIL PROTECTED]> wrote: > >>So yea...WTF? I can't believe after my years of AS2 coding that it would > >>have taken me this long to notice. > > I think I muttered those exact words. Bizzare behavior. Though I don't think > I have ever run into it. Someone taught me long ago not to initialize class > variables in their definitions. So I just never have done that. Really good > to know though. > > Dave - > Head Developer > http://www.blurredistinction.com > Adobe Community Expert > http://www.adobe.com/communities/experts/ > > > > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders