Action Script 3.0 值传递和引用传递

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

从测试结果可以看出,调用函数前后实参的值发生了变化。实参把值传递给形参后,形参又把改变后的值传递给了实参。

相关文档
最新文档