如果初始化定义中的值与内部构造函数有什么区别

时间:2011-12-21 20:06:09

标签: flash actionscript-3

说有一个班级

package
{

 public MyClass 
 {

   var myA:Number = 10 ; //<< initializing here 

     public function MyClass()
     {
        myA = 20; //<< initializing here
     }

 }

}

以上哪一项是正确的方法?

1 个答案:

答案 0 :(得分:3)

在我参加的一个会议上,我在一次关于优化的会议中被告知,在构造函数中执行许多赋值和操作,或者在函数外声明变量是不明智的;因为,编译器不会通过任何有力的优化来放置这些部分。

这让我相信最好在你的函数之外声明你的变量,然后在初始化函数中分配它们,除非这些变量作为参数传递给构造函数并且你想避免传递它们试。

package{

 public MyClass {

   private var myA1:Number; //declare here 
   public var myA2:Number;  //declare here

   public function MyClass(arg1:Number = 10):void{
       myA1 = arg1;//assigns myA1 a Number passed into the constructor, or 10
       init();
   }
   public init():void{
       myA2 = 20;  //assigns myA2 a value of 20
   }
 }
}

同样,在谷歌搜索后我发现这篇文章似乎同意。

http://voices.yahoo.com/flash-actionscript-3-optimization-guide-part-1-4793274.html

请记住,您可能只想以某种方式做事,让事情变得更轻松,然后再进行优化;因为,完成它比风格imho更重要。

希望有所帮助。