[AS3]AS3.0中的函数定义与语句
函数表达式定义法:必须先定义,才可以调用,[AS3]AS3.0中的函数定义与语句
1、函数表达式定义法:必须先定义,才可以调用
- var a:Function = function(a:int, b:int):int{
- return (a+b);
- }
2、函数语句定义法:优先自动加载,所以调用顺序不用考试
- function addnum(a:int, b:int):int{
- return (a+b);
- }
- var c:int = addnum(2,3);
- trace(c);//极酷播放器提示:5
3、this对象的分析
- eg:
- var num:int = 3;
- function testThisA(){
- trace (num);
- trace (this.num);//牢牢指向当前域
- trace (this);
- }
- var testThisB:Function = function testThisB(){
- trace (num);
- trace (this.num);//随着函数附着的对象不同,this指向的对象也会随之改变
- trace (this);
- }
- var obj:Object = {num:300};
- obj.testB = testThisB
- obj.testA = testThisA
- testThisA();
- 3
- 3
- [object MainTimeline]
- testThisB();
- 3
- 3
- [object MainTimeline]
- obj.testA();//函数语句定义法会牢牢指向当前域
- 3
- 3
- [object MainTimeline]
- obj.testB();//函数表达式定义法则会引用obj对象
- 3
- 300
- [object Object]
- testThisA.call(obj);//函数语句定义法会牢牢指向当前域
- 3
- 3
- [object MainTimeline]
- testThisB.apply(obj);//函数表达式定义法则会引用obj对象
- 3
- 300
- [object Object]
4、不变对象不会在函数中被改变,因为启用了新的对象,而数组等值引用类型的则被改变
- function replaces(a:int, b:Array):void{
- a = 100;
- b.push(100);
- }
- var a:int =5;
- var b:Array = [1,2,3];
- replaces(a,b);
- trace(a)//5
- trace(b)//1,2,3,100
5、函数设置默认参数,as3中参数在没有默认值的情况下必须对应,as2中可无视参数个数
- function test(a:int=1,b:int=2):void{
- trace("参数长度:" + arguments.length);
- trace(a+b);
- if(a+b > 0)arguments.callee(a-1, b-1);//arguments.callee用于参数的递归
- }
- test();
- 结果:
- 参数长度:0
- 3
- 参数长度:2
- 1
- 参数长度:2
- -1
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...