AS3 动态的来调整参数

转自  :  http://bbs.9ria.com/forum.php?highlight=function+apply&mod=viewthread&tid=106936

我们在调用函数的时候,有时可能会希望动态的来调整参数。如

  1. someFunction(10,20,30);
复制代码
这样的话,10,20,30这三个参数都是写定在程序中的。有时,我们希望由AS3自己来触发这个函数,即动态的提供10,20,30这个些参数。怎么办呢?这时候就会用到apply方法:
  1. someFunction.apply(null,[10,20,30]);
复制代码
这样运行,我们第一次编写的代码,结果是一致的。但是不同的是,三个参数我们是以一个数组来进行传递的,因此,我们也可以用某一个变量来代替这个数组,如
  1. var arr:Array = [10,20,30];
  2. someFunction.apply(null,arr);
复制代码
有了变量,我们就可以动态的来修改参数了。那apply的第一个参数是做什么用的呢?实际上,他是在函数内部,this的引用目标。我们来看下面的代码:
  1. var fun2:Function = function(a:uint):void{
  2. trace(this);
  3. trace(a);
  4. }

  5. fun2.apply(null,10);
复制代码
可以发现,输出结果为
  1. [object global]
  2. [10]
复制代码
也就是说。默认情况下,函数内部的this并不是我们所在的这个类,而如果我们传递了这个参数:
  1. var fun2:Function = function(a:uint):void{
  2. trace(this);
  3. trace(a);
  4. }

  5. fun2.apply(this,10);
复制代码
你就会发现,输出结果变成了
  1. [object Main]
  2. [10]
复制代码
现在,函数内部的this变成了我们的文档类Main了。

学到一招了没:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值