学习 Adobe Flash 中的 ActionScript 2.0 |
|
|
|
| 数据和数据类型 > 关于变量 > 在应用程序中使用变量 > 按引用传递变量 | |||
因为数组和 Object 数据类型包含对值的引用而不是包含实际的值,因此在使用数组和对象时要小心。
下例显示了如何按引用传递对象。在创建数组的副本时,实际上创建的只是对数组内容的引用(或别名)的副本。编辑第二个数组中的内容时,将修改第一个和第二个数组的内容,因为它们都指向同一个值。
按引用传递对象:
var myArray:Array = new Array("tom", "josie");
var newArray:Array = myArray;
myArray[1] = "jack";
trace(myArray); // tom,jack
trace(newArray); // tom,jack
此 ActionScript 创建了一个名为 myArray 的 Array 对象,它包含两个元素。创建变量 newArray 并将引用传递给 myArray。当将 myArray 的第二个元素更改为 jack 时,它将影响引用它的每个变量。trace() 语句将 tom,jack 发送到"输出"面板。
|
注意 |
Flash 使用基于零的索引,这意味着 0 是数组中的第一项,1 是第二项,依此类推。 |
在下例中,myArray 包含一个 Array 对象,因此您可以按引用将该数组传递给函数 zeroArray()。函数 zeroArray() 会将 Array 对象作为参数来接受,并将该数组的所有元素设置为 0。因为该数组是按引用进行传递的,所以该函数可以修改它。
按引用传递数组:
function zeroArray (theArr:Array):Void {
var i:Number;
for (i = 0; i < theArr.length; i++) {
theArr[i] = 0;
}
}
var myArr:Array = new Array();
myArr[0] = 1;
myArr[1] = 2;
myArr[2] = 3;
trace(myArr); // 1,2,3
zeroArray(myArr);
trace(myArr); // 0,0,0
此 ActionScript 中的第一个 trace() 语句显示 myArray 数组的原始内容 (1,2,3)。在调用了 zeroArray() 函数并传递一个对 myArray 数组的引用之后,该数组的各个值都将被覆盖并被设置为 0。后面的 trace() 语句显示 myArray 数组的新内容 (0,0,0)。因为是按引用(而不是按值)传递数组的,所以不需要从 zeroArray() 函数中返回数组的更新内容。
有关数组的详细信息,请参阅"关于数组"。
|
|
|
|