【问题标题】:what is the difference between * and Object* 和 Object 有什么区别
【发布时间】:2013-05-31 18:39:49
【问题描述】:

假设我有一个包含几个属性的类:

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

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

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

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

    From ActionScript data type descriptors:

    在以前版本的 ActionScript 中,没有类型的变量 注释被自动分配对象数据类型。这不是 在 ActionScript 3.0 中更是如此,现在包含了 真正的无类型变量。没有类型注释的变量现在是 被认为是无类型的。如果您更愿意向您的读者说明 您的意图是使变量保持无类型的代码,您可以使用 类型注释的新星号 (*) 符号,即 相当于省略类型注释。下面的例子显示 两个等价的语句,都声明了一个无类型变量:

    var x 
    var x:*
    

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

    举个例子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-20
      • 2011-08-12
      • 1970-01-01
      • 2019-12-06
      • 2013-04-11
      • 2011-11-25
      • 1970-01-01
      • 2014-09-03
      相关资源
      最近更新 更多