4

假设我有一个具有一些属性的类:

public class MyClass {
   public var fooProp:*;
   public var barProp:Object;
}

实际上,它们之间有什么区别?是否有我以后可以分配给 fooProp 而我不能分配给 barProp 的变量类型?

4

1 回答 1

6

只有无类型的变量可以保存该值undefined。无类型变量是缺少任何类型注释或使用星号*符号进行类型注释的变量。

来自 ActionScript 数据类型描述符

在以前版本的 ActionScript 中,没有类型注释的变量被自动分配了 Object 数据类型。这在 ActionScript 3.0 中不再适用,它现在包含了真正无类型变量的想法。没有类型注释的变量现在被认为是无类型的。如果您希望让代码的读者清楚您的意图是使变量保持无类型,您可以使用新的星号 (*) 符号作为类型注释,这相当于省略类型注释。以下示例显示了两个等效语句,它们都声明了一个无类型变量:

var x 
var x:*

只有无类型的变量可以保存未定义的值。如果您尝试将值 undefined 分配给具有数据类型的变量,Flash Player 或 Adob​​e AIR 会将值 undefined 转换为该数据类型的默认值。对于 Object 数据类型的实例,默认值为 null,这意味着如果您尝试将 undefined 分配给 Object 实例,Flash Player 或 Adob​​e AIR 会将值 undefined 转换为 null。

举个例子:

var t:* = undefined;
trace(t); // outputs: undefined

var t:Object = undefined;
trace(t); // outputs: null
于 2013-06-05T07:16:13.900 回答