构造函数之外的实例化之间有什么区别吗?

时间:2012-07-03 08:39:44

标签: 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()
         {
              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似乎在调用构造函数之前存在(何时发生这种情况,有什么好处?)。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

Actionscript是一种相当高级的语言,只要你不惹恼它的垃圾收集,你可以抛出的大部分东西往往会非常寒冷。话虽如此,即使是较低级别的语言也不关心你采用哪种方式,所以它真的归结为风格问题。

就个人而言,我尝试只初始化常量和变量,我想调整通常在构造函数之上的初始值;通过这种方式,他们很容易被发现和改变,而且并没有被new这个和()那么混乱。