您的位置:首页 > 其它

AS3 动态的来调整参数

2014-09-15 10:54 78 查看
转自  :  http://bbs.9ria.com/forum.php?highlight=function+apply&mod=viewthread&tid=106936

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

someFunction(10,20,30);

复制代码
这样的话,10,20,30这三个参数都是写定在程序中的。有时,我们希望由AS3自己来触发这个函数,即动态的提供10,20,30这个些参数。怎么办呢?这时候就会用到apply方法:

someFunction.apply(null,[10,20,30]);

复制代码
这样运行,我们第一次编写的代码,结果是一致的。但是不同的是,三个参数我们是以一个数组来进行传递的,因此,我们也可以用某一个变量来代替这个数组,如

var arr:Array = [10,20,30];

someFunction.apply(null,arr);

复制代码
有了变量,我们就可以动态的来修改参数了。那apply的第一个参数是做什么用的呢?实际上,他是在函数内部,this的引用目标。我们来看下面的代码:

var fun2:Function = function(a:uint):void{

trace(this);

trace(a);

}

fun2.apply(null,10);

复制代码
可以发现,输出结果为

[object global]

[10]

复制代码
也就是说。默认情况下,函数内部的this并不是我们所在的这个类,而如果我们传递了这个参数:

var fun2:Function = function(a:uint):void{

trace(this);

trace(a);

}

fun2.apply(this,10);

复制代码
你就会发现,输出结果变成了

[object Main]

[10]

复制代码
现在,函数内部的this变成了我们的文档类Main了。

学到一招了没:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: