flash as3在类构造函数之前或类中定义变量?

xdl*_*xdl 1 flash actionscript-3

有什么区别

package {
    public class Myclass {
        var txt:TextField = new Textfield();

        function Myclass() {

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

package {

    public class Myclass {

        var txt:TextField;

        function MyClass() {

            txt = new TextField;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道当你设置创建一个新对象时,类构造函数会运行,如下所示:

var object:Myclass = new Myclass();

在第二种方式中,这将创建新的TextField.

我的困惑是,在第一种方式,什么时候创建TextField?如果我将类导入另一个类,它会为TextField留出内存吗?如果它是一个静态变量呢?

spa*_*pan 6

在你实例化之前不会分配内存,所以在这方面它并不重要.

如果你使用一个静态变量,那么变量将占用内存,因为它没有绑定到实例化的对象,而是像该类中的全局变量.

编辑:pkyeck关于如何在注释中最好地构造和初始化对象的明确澄清: 在构造函数内部的AS3代码应该是慢的 - 所以最好创建一个init()方法并在那里进行实例化而只是所有的构造函数中的init().实时编译器(JIT)未优化构造函数内的代码.要使用JIT优化代码,可以从构造函数中调用函数.然后再次优化该函数内的代码.取自这里:je2050.joa-ebert.com/files/misc/as3opt.pdf - pkyeck