为了更加严格地遵从 ECMA-262 版本 4 建议,在 Flash Player 7 中进行了几项更改(请参见 www.mozilla.org/js/language/es4/index.html)。除了动作脚本 2.0 中提供的基于类的编程技术(请参见新的面向对象编程模型)之外,还增加了其它一些功能并更改了某些行为。此外,在以 Flash Player 7 为目标播放器进行发布和使用动作脚本 2.0 时,您可以将一种对象类型转换为另一种对象类型。有关更多信息,请参见转换对象。这些功能不要求更新现有脚本;但是,如果要将脚本发布到 Flash Player 7,然后继续对脚本进行修改和改进,则可能会需要使用这些功能。
与上文中提到的更改不同,下表中列出的更改(某些更改也可以提高 ECMA 符合性)可能会导致现有脚本表现出与以前不同的行为。如果在要发布到 Flash Player 7 的现有脚本中使用了这些功能,请检查这些更改,以确保代码仍会按照预期的方式工作,或者确定是否需要改写代码。需要特别注意的是,因为在某些情况下对 undefined
的计算结果是不同的,所以您应该初始化脚本中移植到 Flash Player 7 的所有变量。
以Flash Player 7 为目标播放器发布的SWF 文件 |
以早期 Flash Player 版本为目标播放器发布的 SWF 文件 |
---|---|
支持区分大小写(仅大小写不同的变量名被解释为不同的变量)。这一更改还会影响使用 |
不支持区分大小写(仅大小写不同的变量名被解释为相同的变量)。 |
在数值上下文中求
|
在数值上下文中求
|
把 firstname = "Joan ";
lastname = "Flender";
trace(firstname + middlename + lastname);
// Joan undefinedFlender
|
把 firstname = "Joan ";
lastname = "Flender";
trace(firstname + middlename + lastname);
// Joan Flender
|
将字符串转换为布尔值时,如果字符串的长度大于零,结果为 |
将字符串转换为布尔值时,首先会将字符串转换为数字;如果数字为非零,结果为 |
在设置数组的长度时,只有有效的数字字符串才设置该长度。例如,"6" 正确,而 " 6" 或 "6xyz" 不正确。 my_array=new Array();
my_array[" 6"] ="x";
trace(my_array.length); // 0
my_array["6xyz"] ="x";
trace(my_array.length); // 0
my_array["6"] ="x";
trace(my_array.length); // 7
|
在设置数组的长度时,即使是格式错误的数字字符串也能设置长度: my_array=new Array();
my_array[" 6"] ="x";
trace(my_array.length); // 7
my_array["6xyz"] ="x";
trace(my_array.length); // 7
my_array["6"] ="x";
trace(my_array.length); // 7
|