Actionscript 3 构造函数外部的实例化有什么区别吗?

Actionscript 3 构造函数外部的实例化有什么区别吗?,actionscript-3,Actionscript 3,考虑这个简单的AS3类 package { import flash.display.Sprite; import flash.display.MovieClip; public class MySprite extends Sprite { private var someMC:MovieClip = new MovieClip(); public function MySprite() {

考虑这个简单的AS3类

package
{
     import flash.display.Sprite;
     import flash.display.MovieClip;

     public class MySprite extends Sprite
     {
         private var someMC:MovieClip = new MovieClip();

         public function MySprite()
         {
              super();

              addChild(someMC);
         }
     }
}
还有这个:

package
{
     import flash.display.Sprite;
     import flash.display.MovieClip;

     public class MySprite extends Sprite
     {
         private var someMC:MovieClip;

         public function MySprite()
         {
              super();

              someMC = new MovieClip();
              addChild(someMC);
         }
     }
}
这是同一件事,还是有更多


我猜这是因为在第一个例子中,MovieClip似乎在调用constructor之前就已经存在了(这是什么时候发生的,有什么好处

都一样。编译器将第一个示例转换为第二个示例。唯一的区别是,当您将赋值放入构造函数时,您可以控制实例化顺序。

Actionscript
是一种相当高级的语言,只要您不讨厌它的垃圾收集,它往往会对您可以扔给它的大多数东西感到非常冷淡。话虽如此,即使是较低级别的语言也往往不关心您使用哪种方式,因此这实际上是一个风格问题


就个人而言,我尝试只初始化我想要调整的常量和变量的初始值,通常在构造函数之上;这样一来,它们很容易被发现和更改,而且不会被大量的
新的
这个和
()
那个弄糊涂。

非常感谢您的快速回复!谢谢桑迪。我倾向于不惜一切代价避免第一个例子,但正如你所说,有时它看起来更干净。对差异(或它如何运作)的这些琐碎的怀疑一直困扰着我。