Actionscript 3 构造函数外部的实例化有什么区别吗?
考虑这个简单的AS3类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() {
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
是一种相当高级的语言,只要您不讨厌它的垃圾收集,它往往会对您可以扔给它的大多数东西感到非常冷淡。话虽如此,即使是较低级别的语言也往往不关心您使用哪种方式,因此这实际上是一个风格问题
就个人而言,我尝试只初始化我想要调整的常量和变量的初始值,通常在构造函数之上;这样一来,它们很容易被发现和更改,而且不会被大量的
新的这个和()
那个弄糊涂。非常感谢您的快速回复!谢谢桑迪。我倾向于不惜一切代价避免第一个例子,但正如你所说,有时它看起来更干净。对差异(或它如何运作)的这些琐碎的怀疑一直困扰着我。