AS3 ActionScript as3中为什么Object实例可以动态添加任意属性,而Object的子类实例不可以? 动态类
- public class A extends Object {
- public A(){}
- }
- var a:Object = new Object;
- a.x = 1; // ok
- var b:Object = new A;
- b.x = 1; // 运行时错误:ReferenceError: Error #1056: Cannot create property x on A.
在AS3中动态属性不会被子类继承,除非你用dynamic指定子类也是动态的。
参见Adobe官方帮助文档:
http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/statements.html#dynamic
- sonyanda
- 42
编辑于 2012-09-17
-
0 票
-
Object是动态类,可以在运行时扩展动态类的属性和方法,例如对动态类实例中的数据和方法进行重命名、重写或在程序运行时添加等操作。
最好少用动态类,如果把某个属性值写错了,程序也不会报错,而且可读性也不好。
可以通过dynamic关键字来定义动态类,上面的代码按如下修改就不会报错了:
public dynamic class A extends Object