eval 函数

eval(expression:Object) : Object
eval(expression:String) : Object

按照名称访问变量、属性、对象或影片剪辑。如果表达式是变量或属性,则返回该变量或属性的值。如果表达式是对象或影片剪辑,则返回对该对象或影片剪辑的引用。如果找不到表达式中指定的元素,则返回 undefined。

在 Flash 4 中,eval() 用于模拟数组;在 Flash 5 或更高版本中,您应该使用 Array 类来模拟数组。

在 Flash 4 中,您还可以使用 eval() 动态设置和检索变量值或实例名称。然而,也可以使用数组访问运算符 ([]) 来实现这一点。

在 Flash 5 或更高版本中,不能使用 eval() 动态设置和检索变量值或实例名称,因为不能在等式的左侧使用 eval()。例如,将代码

eval ("var" + i) = "first";

替换为:

this["var"+i] = "first"

或者替换为:

set ("var" + i, "first");

可用性:ActionScript 1.0、Flash Player 5 ― Flash Player 5 或更高版本具有完整功能。导出到 Flash Player 4 时,可以使用 eval() 函数,但必须使用斜杠记号,并且只能访问变量,而不能访问属性或对象。

参数

expression:Object ― 要检索的变量、属性、对象或影片剪辑的名称。此参数可以是一个字符串,也可以是对对象实例的直接引用(也就是说,引号 (" ") 是可选的)。

返回

Object ― 一个值,对对象或影片剪辑的引用,或者 undefined

示例

下面的示例使用 eval() 为动态命名的影片剪辑设置属性。此 ActionScript 为三个影片剪辑(分别称为 square1_mcsquare2_mcsquare3_mc)设置 _rotation 属性。

for (var i = 1; i <= 3; i++) {
 setProperty(eval("square"+i+"_mc"), _rotation, 5);
}

也可以使用以下 ActionScript:

for (var i = 1; i <= 3; i++) {
 this["square"+i+"_mc"]._rotation = -5;
}

请参阅

Array, set variable 语句