因此,我今天已经阅读了很多有关语句性能,可读性和类似内容的信息,但我仍然不确定是否应该在AS3中使用with语句。

使用with语句似乎与创建可以携带参考的本地var相同。有人可以提供有关此主题的详细信息吗?

有帮助吗?

解决方案

好吧,从我自己的个人基准中,with()语句实际上出现了一点慢一点。除非您试图挤出电影中的每一盎司表演,否则这没什么大不了的。对于反对变量而不是常数的循环,或者在循环中进行循环,也可以说同样的话。除非您在许多迭代中加重这些循环,否则您并不需要关心它。

至于代码可读性,我认为它可以使使用()使用更清洁的外观。这一切都归结为编码样式。我真正使用()语句的唯一一次是称为已知目标。可以说,您的鼠标事件处理程序单击时选择对象,然后将其设置为CurrentObject。然后,您可以具有执行类似的功能

with(currentObject)
{
 x = 100;
 y = 100;
 alpha = 0.5;
}

当然,您可以做其他方法,但是就像我说的那样。它归结为编码样式。我真正通过使用此方法真正看到的唯一节省是缩短击键与执行CurrentObject.x = 100; currentObject.y = 100;

其他提示

我认为,最大的问题 with 没有编译时间检查。任何错误都将仅在运行时发现。但这有助于清洁代码,我有点喜欢它。只知道您在做什么,这可能很有用。

with 是纯句法糖。

在性能方面,这显然不是优化。我已经运行了几次循环,似乎比通常的属性访问更慢。

在可读性方面,我什至不确定会有收益。我实际上更喜欢使用 格兰特·斯金纳的建议. 。但是在某些情况下可能有用: with (event.target as MovieClip), ,因为否则它将需要中间变量声明。

结论:在大多数情况下,不要使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top