天天看点

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

继续阅读