2009-01-29 34 views
2

在Flex 3,的Flex/ActionScript3的:关键字 “与” 皮拼写错误的属性名称

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

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

这让我很伤心,因为“有”是Delphi的一个小提醒(除非它在那里正常工作)。

我在这里错过了什么吗?

+0

你怎样决定它是不是JavaScript的行为吗? – dkretz 2009-01-29 02:28:15

回答

3

从阅读documentation

的Actionscript明显泡出的嵌入式变量(不奇怪范围的分辨率,因为语法不需要像一个明确的解引用符号或‘ - >’来指示“”变量名称应该是“withed”)。因此,您有效地在名为propert3的全局范围创建变量。想为什么这个“问题”的存在后


编辑 -

JavaScript是不严格的分型的缩影。而Actionscript作为Javascript的一个严格超集,除了通过它自己的语言扩展声明外,不能强制执行严格的输入 - 这意味着它必须支持非类型化变量。

+0

该文档链接在本地机器上。我认为你的意思可能是http://livedocs.adobe.com/flex/3/langref/index.html – 2009-01-29 08:08:23

+0

编译器不应该提前告诉变量propert3没有提前声明吗? ...(几分钟测试)...不,不。此外,也没有运行时错误。 – 2009-01-29 13:51:27