2010-09-20 83 views

回答

2

它不会影响性能。我使用*时,我不知道对象将是什么类型,直到运行时。

从LiveDocs中:使用*在这种情况下:

  • 当你想推迟类型检查运行时。您可以在严格模式下使用 无类型属性或 的表达式规避编译时类型检查 。但是请注意,赋值语句 那 运行时类型检查时是否使用 严格模式与否。
  • 当你要存储在属性值undefined。不同于 以前的ActionScript的版本中,未定义的 值不是 Object数据类型的成员。您必须使用 未定义属性来存储未定义的值 。
1

在ActionScript 3的所有变量和类类型是Object子类,所以在功能方面,我不认为这是两者之间有什么区别。

Object一些子类,如intNumber的行为很像栈对象(这意味着var firstInt:int = 5var secondInt:int = 5实际上指向同一个Object),但这并不影响他们如何对待,当你指向他们使用泛型变量。

如果我可能冒险猜测,我会说他们增加了通配符作为保存输入的一种方式,并且使得C/C++移植者更容易使用指针void*而不是基地Object类型。

0

您可以用同样的方式使用这两种类型。他们之间虽然有一些差异。通配符类型具有附加值:undefined

var a: Object; 
var b: *; 
var c: *; 

trace(a + ": " + getQualifiedClassName(a) + "  " + b + ": " + getQualifiedClassName(b) + "  " + c + ": " + getQualifiedClassName(c)); 

b = a; 
a = c; 

if (a == undefined) 
    trace("compiles with a warning"); 
相关问题