zoukankan      html  css  js  c++  java
  • 学习AS3菜鸟起飞吧之—函数(二):函数的引用

    编程中经常用到函数的引用,因为函数属于复杂数据类型,所以函数与类一样,是通过引用来操作数据的。

    引用函数的语法就是使用函数名。例如:事件中的接收者函数其实是通过引用来实现的。

    下面的代码定义了名为onClick的函数,这个函数有个参数e,其数据类型是类类型(MouseEvent),并且有void标明这个函数没有返回值: 

     mc.addEventListener("click",onClick); 
    function onClick(e:MouseEvent):void 

    mc.x = mc.x + 5; 
    }

    看第一行代码: 
     mc.addEventListener("click",onClick); 
    函数或方法addEventListener()有两个参数: 
    第1个参数click,表示单击事件名, 
    第2个参数onClick,是函数名。也就是说第二个参数传递的是函数的引用。 

    同样,在使用setInterval()函数时,也是用函数的引用 

    function test() { 
    trace("函数被调用"); 

    setInterval(test,1000); 这一行中的test就是对前面定义的函数的引用 

    所以能用函数作为参数,是因为函数是一种复杂数据类型的数据,任意数据类型的变量都可以作为函数的参数。 

    用函数作为参数的实例: 

    //调用函数 
    referFunc(traceMsg); 
    //定义函数 
    function traceMsg():void { 
    trace("this is function"); 

    //函数的引用作为参数 
    function referFunc(f:Function):void { 
    f(); 


    在函数referFunc()中定义了一个数据类型为Function,即函数类型的参数,然后通过函数名f和()调用函数,这就是用函数名作为参数。 

    用函数作为参数并传递函数的参数实例: 

    //调用函数 
    referFunc(traceMsg,"this is function"); 
    //定义函数 
    function traceMsg(msg:*):void 

    trace(msg); 

    //函数的引用作为参数并传递引用函数的参数 
    function referFunc(f:Function,msg:*):void 

    f(msg); 


    用函数作为参数,实际上是在函数内调用了函数f(msg),参数f 是对函数traceMsg的引用。 

     函数名即引用,引用可以有多个,所以可通过变量来引用函数 

    //用变量func引用函数 
    var func:Function = traceMsg; 
    //通过引用调用函数 
    func(); 
    //定义函数 
    function traceMsg():void 

    trace("this is function"); 


    上面的代码简化为: 

    //定义变量并引用函数 
    var func:Function = function():void 

    trace("this is function"); 

    //调用函数 
    func(); 

    代码首先定义了函数类型的变量func,通过“=”运算符把函数的引用赋值给变量func。 

    提示:代码中的函数并没有函数名,这样的函数称为无名函数,由于没有函数名,只能通过引用来调用这个函数。 

    注意:当用变量来引用函数并调用函数时,要确定先定义变量,再调用函数,因为变量要先定义才可以使用。 

    在使用复杂数据类型的变量时,只有变量引用同一个实体时,这两个变量才会相等。同样只有两个变量引用同一个函数时,这两个变量才会相等。 

    //变量func1引用函数traceMsg 
    var func1:Function = traceMsg; 
    //变量func2引用函数traceMsg 
    var func2:Function = traceMsg; 
    //比较两个变量的引用是否相等 
    trace(func1==func2); 
    function traceMsg(msg:*):void 

    trace(msg); 


    测试代码,结果是true,说明两个变量引用的是同一个函数

  • 相关阅读:
    设计模式系列
    Python3 系列之 可变参数和关键字参数
    设计模式系列
    【HANA系列】SAP HANA ODBC error due to mismatch of version
    【FICO系列】SAP FICO FS00修改科目为未清项目管理
    【FIORI系列】SAP OpenUI5 (SAPUI5) js框架简单介绍
    【HANA系列】SAP HANA SQL获取当前日期加若干天后的日期
    【HANA系列】SAP HANA SQL获取本周的周一
    【HANA系列】SAP HANA SQL获取当前日期
    【HANA系列】SAP HANA SQL获取当前日期最后一天
  • 原文地址:https://www.cnblogs.com/xigua1hao/p/3959752.html
Copyright © 2011-2022 走看看