ActionScript 3 函数
函数定义:函数是执行特定任务并可以在程序中重复利用的代码块
函数的2种声明方式{
1 函数语句定义法:
function testadd(a:int,b:int):int{
//函数名:testadd 函数参数a,b 函数返回类型 int
return a + b;
返回a+b的值
}
2 函数表达式定义法:
var testadd:Function=function(a:int,b:int):int{
return a + b;
}
推荐使用第一种函数声明法(函数语句定义法) 因为这种方法更标准 简洁
函数声明法1 在编译时被提升(hoisting)到最前
函数表达式定义法2 必须先定义 后使用 应用灵活 很多技巧都是使用此类函数
this 关键字
}
参数操作{
按值传入:操作单数对象的副本 (基本类型)
按引用传入:操作参数对象的引用 (复杂类型)
function test(a:int,b:Array):void{
a=100; b.push(100);
}
var a:int=5; var b:Array=[1,2];
test(a,b);
trace(a,b);
}
默认参数:
function test(i:int=1,b:int=2):int{
return a + b;
}
arguments 、...args 和 callee {
arguments: 数组类型 保存按顺序传入的参数值
...args: 数组类型 接受多个参数 保存按顺序传入的参数值
//一旦在函数中使用了 ...args 则 arguments 关键字不可以再使用
callee: 当前函数的引用
function test(a:int=0,b:int=1,c:int=2):void{
trace("参数长度: "+arguments.length);
//arguments.length 参数长度
trace(a+b+c);
if(a+b+c<6) arguments.callee(a+1,b+1,c+1);
}
function test(...args):void{
trace("参数长度: "+args.length);
for(var i in args){
trace(args[i]);
}
}
test(1,2,3,4,5);
function test(s:String,...args):void{
for(var i in args){
trace(s+args[i]);
}
}
test("参数分别是: "1,2,3,4,5);
}
构造函数
方法重载:所谓方法重载(overload method) 是指将写多个同名方法 达到同名的函数实现
不同的功能 这些同名的方法 往往区别于参数的数目 类型 相当于相同名称的多个版本
编译器根据传入的不同参数来调用不同的版本
ActionScript3 不支持方法重载 但我们可以使用 ...args 关键字来实现类似的行为
package {
import flash.display.Sprite;
public class OverloadTest extends Sprite{
public function OverloadTest(){
Overload("100");
}
private function Overload(...args){
if(typeof(args[0]) == "number"){
trace("args is Number");
}else if(typeof(args[0]) == "string"){
trace("args is String");
}else{
trace("args is another type");
}
}
}
}
//重载的重点在于参数的个数和类型和返回类型