當然有很多可能性,其中最常見的亦是傳統做法不外乎
if..(condition)..then...而我的做法就是自行寫一個Helper,用Array以arguments型式去呼叫Function。
function1();
function2();
function3();
...
function SayGoodBye() { $('#hello').html('GoodBye'); } function SeeYou() { $('#hello').html($('#hello').html() + ',' + 'See you next time!'); } function caller(aryfunc) { $.each(aryfunc,function(i,n) //用jQuery的each { Function.call(n()); } ); } $(document).ready(function() { //if..(condition)..then... var myFunc = new Array(SayGoodBye,SeeYou); //and more... caller(myFunc); //Print out : GoodBye,See you next time! }); <div id="hello"></div>
這就可以把 condition 移至外部,用Helper去呼叫Function更加靈活。而且Array中的項目,Function的arguments不只是資料型態(String,Int...),更可以是function()吧。
在 $.each 裏的 this 已是 array element,所以直接 this() 就可以了,不用 Function.call. 見 http://jsbin.com/otubi/edit
回覆刪除將 function pass 來 pass 去是 javascript 的強大之處,jQuery 當用的語法如 $("#abc").click(function(){ ... }) 其實就是將一個 anonymous function pass 進 click function 裏去
請問版主,若是使用 javascript 又該如何實現多載
回覆刪除原生的Javascript是沒有overload(多載)的.
回覆刪除網上你會找到很多例子說可以做到,但如果你細心睇睇,很明顯與C#,Java的overload是不同.
如果真的需要的話,可以這樣自行建構.
[js]
<script language="JavaScript">
function Test1(param)
{
alert(param);
}
function Test2(param1,param2)
{
alert(param1 + param2);
}
function TestOverload(param1,param2)
{
if(param2==null)
Test1(param1);
else
Test2(param1,param2);
}
TestOverload(1);
TestOverload(1,2);
</script>
[/js]