考虑这个简单的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似乎在调用构造函数之前存在(何时发生这种情况,有什么好处?)。
答案 0 :(得分:4)
一切都是一样的。编译器将您的第一个示例转换为第二个示例。唯一的区别是,当您将赋值放入构造函数时,您可以控制实例化顺序。
答案 1 :(得分:0)
Actionscript
是一种相当高级的语言,只要你不惹恼它的垃圾收集,你可以抛出的大部分东西往往会非常寒冷。话虽如此,即使是较低级别的语言也不关心你采用哪种方式,所以它真的归结为风格问题。
就个人而言,我尝试只初始化常量和变量,我想调整通常在构造函数之上的初始值;通过这种方式,他们很容易被发现和改变,而且并没有被new
这个和()
那么混乱。