【发布时间】:2013-05-31 18:39:49
【问题描述】:
假设我有一个包含几个属性的类:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
实际上,它们之间有什么区别?有没有我以后可以分配给 fooProp 而我不能分配给 barProp 的变量类型?
【问题讨论】:
标签: actionscript-3
假设我有一个包含几个属性的类:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
实际上,它们之间有什么区别?有没有我以后可以分配给 fooProp 而我不能分配给 barProp 的变量类型?
【问题讨论】:
标签: actionscript-3
只有无类型变量可以保存值undefined。无类型变量是缺少任何类型注释或使用星号* 符号进行类型注释的变量。
From ActionScript data type descriptors:
在以前版本的 ActionScript 中,没有类型的变量 注释被自动分配对象数据类型。这不是 在 ActionScript 3.0 中更是如此,现在包含了 真正的无类型变量。没有类型注释的变量现在是 被认为是无类型的。如果您更愿意向您的读者说明 您的意图是使变量保持无类型的代码,您可以使用 类型注释的新星号 (*) 符号,即 相当于省略类型注释。下面的例子显示 两个等价的语句,都声明了一个无类型变量:
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
【讨论】: