假设我有一个具有一些属性的类:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
实际上,它们之间有什么区别?是否有我以后可以分配给 fooProp 而我不能分配给 barProp 的变量类型?
假设我有一个具有一些属性的类:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
实际上,它们之间有什么区别?是否有我以后可以分配给 fooProp 而我不能分配给 barProp 的变量类型?
只有无类型的变量可以保存该值undefined
。无类型变量是缺少任何类型注释或使用星号*
符号进行类型注释的变量。
在以前版本的 ActionScript 中,没有类型注释的变量被自动分配了 Object 数据类型。这在 ActionScript 3.0 中不再适用,它现在包含了真正无类型变量的想法。没有类型注释的变量现在被认为是无类型的。如果您希望让代码的读者清楚您的意图是使变量保持无类型,您可以使用新的星号 (*) 符号作为类型注释,这相当于省略类型注释。以下示例显示了两个等效语句,它们都声明了一个无类型变量:
var x var x:*
只有无类型的变量可以保存未定义的值。如果您尝试将值 undefined 分配给具有数据类型的变量,Flash Player 或 Adobe AIR 会将值 undefined 转换为该数据类型的默认值。对于 Object 数据类型的实例,默认值为 null,这意味着如果您尝试将 undefined 分配给 Object 实例,Flash Player 或 Adobe AIR 会将值 undefined 转换为 null。
举个例子:
var t:* = undefined;
trace(t); // outputs: undefined
var t:Object = undefined;
trace(t); // outputs: null