搜索'var:*'有点棘手,因为大多数搜索引擎都找不到它.
我不清楚var:*的含义是什么,与var:Object相比
我以为它会让我在对象上设置任意属性,如:
var x:* = myObject; x.nonExistantProperty = "123";
但这给了我一个错误:
Property nonExistantProperty not found on x
*究竟是什么意思?
编辑:我将原始的var:*修改为正确的var x:*.丢失了我的互联网连接
扩展其他答案,声明类型为星号的内容与将其保持无类型完全相同.
var x:* = {}; var y = {}; // equivalent
但是,是否允许为对象分配不存在的属性的问题与引用的类型无关,并且取决于对象是否是动态类的实例.
例如,因为Object是动态的而String不是:
var o:Object = {}; o.foo = 1; // fine var a:* = o; a.bar = 1; // again, fine var s:String = ""; s.foo = 1; // compile-time error var b:* = s; b.bar = 1; // run-time error
请注意,无论您使用何种类型的引用,都可以始终为对象分配新属性.同样,你永远不能为String赋予新的属性,但如果你使用一个类型化的引用,那么这将被编译器捕获,并且对于无类型的引用,编译器不知道它是否b
是动态的,所以错误发生在运行.
顺便提一下,类型星号的文档参考可以在这里找到:
http://livedocs.adobe.com/labs/air/1/aslr/specialTypes.html#*
(由于星号,标记引擎拒绝将其链接起来.)