看了动态类,内容不多,也就不总结了,偷赖,把《ActionScript3.0 编程》一书中的内容摘录如下,博客类型写了原创,原创摘录^_^
-----------------------------------------我是华丽的分隔线---------------------------------------------------
动态类
“动态”类定义在运行时可通过添加/ 更改属性和方法来改变的对象。 非动态类(如 String类)是“密封”类。您不能在运行时向密封类中添加属性或方法。
在声明类时,可以通过使用 dynamic 属性来创建动态类 。例如,下面的代码创建一个名为
Protean 的动态类:
dynamic class Protean { private var privateGreeting:String = "hi"; public var publicGreeting:String = "hello"; function Protean() { trace("Protean instance created"); } }
如果要在以后实例化 Protean 类的实例,则可以在类定义的外部向该类中添加属性或方法 。
例如,下面的代码创建 Protean 类的一个实例,并向该实例中添加两个名称分别为 aString和 aNumber 的属性:
var myProtean:Protean = new Protean(); myProtean.aString = "testing"; myProtean.aNumber = 3; trace(myProtean.aString, myProtean.aNumber); // 测试 3
添加到动态类实例中的属性是运行时实体,因此会在运行时完成所有类型检查。不能向以这种方式添加的属性中添加类型注释。
您还可以定义一个函数并将该函数附加到 myProtean 实例的某个属性,从而向 myProtean实例中添加方法。下面的代码将 trace 语句移到一个名为 traceProtean() 的方法中:
var myProtean:Protean = new Protean(); myProtean.aString = "testing"; myProtean.aNumber = 3; myProtean.traceProtean = function () { trace(this.aString, this.aNumber); }; myProtean.traceProtean(); // 测试 3
但是,以这种方式创建的方法对于 Protean 类的任何私有属性或方法都不具有访问权限。而且,即使对 Protean 类的公共属性或方法的引用也必须用 this 关键字或类名进行限定。 下面的示例说明了 traceProtean() 方法,该方法尝试访问 Protean 类的私有变量和公共变量。
myProtean.traceProtean = function () { trace(myProtean.privateGreeting); // undefined trace(myProtean.publicGreeting); // hello }; myProtean.traceProtean();
-----------------------------------------我,华丽的分隔线,再次出现-------------------------------------
这其实和javascript中的机制类似,不同的是在javascript中,可以对任意对象,在任何时候,任意的添加属性和方法。而as3对此做了很大的限制,它们本来也是基于同一标准实现的。但as3已经有些接近强类型语言了。
最后,鄙视一下自己抄书的行为!!-_^