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