假设我有一个有几个属性的类:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
实际上,它们之间有什么区别?我是否可以在以后分配给fooProp的变量类型,我无法分配给barProp?
答案 0 :(得分:6)
只有无类型变量才能保存值undefined
。无类型变量是缺少任何类型注释的变量,或者使用星号*
符号进行类型注释。
From ActionScript data type descriptors:
在以前版本的ActionScript中,没有类型的变量 注释自动分配了对象数据类型。这不是 在ActionScript 3.0中更长时间,现在包含了a的想法 真正无类型的变量。现在没有类型注释的变量 被认为是无类型的。如果您愿意向读者表明您的想法 代码,你的意图是留下一个变量无类型,你可以使用 类型注释的新星号(*)符号,即 相当于省略了类型注释。以下示例显示 两个等效语句,两者都声明了一个无类型变量:
var x var x:*
只有非类型化变量才能保持未定义的值。如果你试图 将值undefined分配给具有数据类型Flash的变量 Player或Adobe AIR会将undefined值转换为默认值 该数据类型的值。对于Object数据类型的实例, 默认值为null,表示Flash Player或Adobe AIR将 如果尝试分配undefined,则将undefined值转换为null 到一个Object实例。
举个例子:
var t:* = undefined;
trace(t); // outputs: undefined
var t:Object = undefined;
trace(t); // outputs: null