Flex / ActionScript3:关键字“with”隐藏拼写错误的属性名称

时间:2009-01-29 02:00:07

标签: flex actionscript-3 oop

在Flex 3中,

var anInstance : MyClass = new MyClass();
with (anInstance)
{
    property1 = "fred";
    property2 = 5;
    propert3 = 7;
}

不会将“属性”标记为不存在的属性名称。我认为这是邪恶的JavaScript对象行为的剩余部分(指的是对象的属性名称隐式创建它),但它似乎是“with”的副作用。

这让我非常难过,因为“with”是对Delphi的一点提醒(除了它在那里正常工作)。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:3)

阅读documentation

对于嵌入变量的范围解析,

Actionscript显然会出现问题(这并不奇怪,因为语法不需要像“。”或“ - >”这样的显式解除引用符号来指示哪些变量名称应该“有效”。)因此,您有效地在名为property3的全局范围内创建变量。


在考虑为什么存在这个“问题”之后编辑 -

Javascript是非严格打字的缩影。作为Javascript的严格超集,Actionscript不能强制执行严格的输入,除非由它自己的语言扩展声明 - 这意味着它必须支持无类型的变量。

答案 1 :(得分:1)

某些类是动态的(例如movieclip),并且可以在运行时添加属性:

http://flexblog.faratasystems.com/?p=95