AS3 ActionScript as3中为什么Object实例可以动态添加任意属性,而Object的子类实例不可以? 动态类

  1. public class A extends Object {
  2.     public A(){}
  3. }
  4. var a:Object = new Object;
  5. a.x = 1;   // ok
  6.                        
  7. var b:Object = new A;
  8. 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
sonyanda
42
编辑于 2012-09-17
评论 (0)链接 • 2012-09-16

Object是动态类,可以在运行时扩展动态类的属性和方法,例如对动态类实例中的数据和方法进行重命名、重写或在程序运行时添加等操作。
最好少用动态类,如果把某个属性值写错了,程序也不会报错,而且可读性也不好。

可以通过dynamic关键字来定义动态类,上面的代码按如下修改就不会报错了:

public dynamic class A extends Object


分享到: 微信 更多