apache-flex - Flex/ActionScript3 : keyword "with" hides misspelled property names

标签 apache-flex actionscript-3 oop

在 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/

相关文章:

apache-flex - 从TextInput扩展组件时出现Flex MXML错误

flash - Flex textInput 自定义边框颜色

image - 如何使用 ActionScript 拖动图像以使其在屏幕上平滑移动?

flash - AS3 中的 A*(A 星)实现

c++派生类问题

php - Flex Builder 4、ZendAMF 和数据服务 - 错误?

php - AS3 RSAKey.sign() != PHP openssl_sign() 函数

c++ - C/C++ 结构偏移

php - 为数据库表创建类/对象是否可以?

actionscript-3 - Flash Pro Admob横幅