在 Flex 3 中,
var anInstance : MyClass = new MyClass();
with (anInstance)
{
property1 = "fred";
property2 = 5;
propert3 = 7;
}
不会将“propert”标记为不存在的属性名称。我认为这是邪恶的 JavaScript 对象行为的剩余部分(指隐式创建它的对象的属性名称),但它似乎是“with”的副作用。
这让我非常难过,因为“with”有点让人想起 Delphi(除非它在那里工作正常)。
我在这里遗漏了什么吗?
最佳答案
阅读 documentation :
Actionscript 显然会在嵌入变量上进行范围解析(这并不奇怪,因为语法不需要像“.”或“->”这样的显式取消引用符号来指示哪些变量名称应该“带有”。)您实际上是在全局范围内创建一个名为 property3 的变量。
在思考为什么这个“问题”存在之后进行编辑 -
Javascript 是非严格类型的缩影。 Actionscript 作为 Javascript 的严格超集,无法强制执行严格的类型定义,除非由其自己的语言扩展声明 - 这意味着它必须支持非类型化变量。
关于apache-flex - Flex/ActionScript3 : keyword "with" hides misspelled property names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490241/