天天看點

javascript天生就具備類似c#中的"委托"功能

今天讀了Professional Javascript for Web Developers,才知道javascript天生就具備類似c#中的"委托"功能

javascript天生就具備類似c#中的"委托"功能

<script type="text/javascript">

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

//定義一個加法函數

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

function fnAdd()

javascript天生就具備類似c#中的"委托"功能

{

javascript天生就具備類似c#中的"委托"功能

    var iResult = 0;

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

    for(var i=0;i<arguments.length;i++)

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

        iResult += arguments[i];

javascript天生就具備類似c#中的"委托"功能

    }

javascript天生就具備類似c#中的"委托"功能

    return iResult;

javascript天生就具備類似c#中的"委托"功能

}

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

//功能與上面的相同,隻不過利用的Function對象

javascript天生就具備類似c#中的"委托"功能

var fnAdd2 = new Function("var iResult = 0;    for(var i=0;i<arguments.length;i++){iResult += arguments[i];}return iResult;");

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

//注意寫法,這裡直接把函數fnAdd2當作參數傳入fnAddDelegate,是不是跟c#中的委托有點類似

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

function fnAddDelegate(fnAdd2,iNum1,iNum2)

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

    return fnAdd2(iNum1,iNum2)

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

document.write(fnAdd(1,2,3) + "<br/>");

javascript天生就具備類似c#中的"委托"功能

document.write(fnAdd2(10,20) + "<br/>");

javascript天生就具備類似c#中的"委托"功能

document.write(fnAddDelegate(fnAdd2,4,5) + "<br/>");

javascript天生就具備類似c#中的"委托"功能
javascript天生就具備類似c#中的"委托"功能

</script>

運作結果:

6

30

9

繼續閱讀