Action Script 3.0 值传递和引用传递
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Action Script 3.0 值传递和引用传递
函数的参数可以是任何数据类型的变量,数据类型可以分为简单数据类型和复杂数据类型。当使用简单数据类型变量作为参数时,传递的是值;当使用复杂数据类型变量作为参数时,传递的是引用。值和引用是简单数据类型和复杂数据类型的最大区别。
对于简单数据类型的参数来说,当调用函数开始时,发生了从实参向形参的值传递。当函数调用结束后,形参并未向实参进行值传递,这种数据传递称为值传递。
例如,创建一个名为myTest()的函数,该函数定义了两个数据类型均为int 型的xParam 和yParam 参数。当使用mValue 和nValue 参数调用函数时,xParam 和yParam 参数将用对int 对象的引用进行初始化,int 对象由mValue 和nValue 表示,代码如下所示。 function myTest(xParam:int,yParam:int):void {
xParam++;
yParam++;
trace(xParam,yParam); }
var mValue:int = 3;
var nValue:int = 7;
trace(mValue,nValue); //输出结果为3和7
myTest(mValue,nValue); //输出结果为4和8
trace(mValue,nValue); //输出结果为3和7
从测试结果可以看出,调用函数时,形参的值开始时是由实参传递来的值3
和7,递增后变为4和8。但形参的值改变后并没有传递给实参,所以调用函数前后实参的值都是3和7。
当调用函数开始时,发生了从实参向形参的数据传递,当调用函数结束时形参也会向实参进行数据传递,这种类型传递称为引用传递或地址传递。
例如,创建一个名为myObj 的对象,该对象具有两个属性:x 和y 。该对象作为参数传递给myTest()函数。因为该对象不是基元类型,所以它不但按引用传递,而且还保持一个引用,代码如下所示。
function myTest(Obj:Object):void {
Obj.x+=100;
Obj.y+=100;
trace(Obj.x,Obj.y);
}
var myObj:Object = {x:100,y:200};
trace(myObj.x,myObj.y); //输出结果为100和200
myTest(myObj); //输出结果为200和300
trace(myObj.x,myObj.y); //输出结果为200和300
从测试结果可以看出,调用函数前后实参的值发生了变化。实参把值传递给形参后,形参又把改变后的值传递给了实参。