VS2008、C#3.0
上一篇提到了為用戶端element訂閱事件處理函數,本篇來看看如何在訂閱的同時傳遞參數。
1. 使用 Function.createDelegate(instance, Function method)function pageLoad() {
this.userName = "guozhijian";
this.password = "pass";
var delegate = Function.createDelegate(this, btnCommitClick);
this.showAlert = function() {
alert("a");
}
Sys.UI.DomEvent.addHandler($get("btnCommit"),"click",delegate);
}
function btnCommitClick(evt) {
alert(this.userName);
alert(this.password);
this.showAlert();
}
調用Function.createDelegate的時候,第一個參數使用this關鍵字,那麼在委託的函數中就可以通過this關鍵字引用到發起訂閱的代碼塊所在對象的成員(包括屬性和方法)。
2. 使用 Function.createCallback(Function method, context)function pageLoad() {
var context = {
userName : "guozhijian",
password : "pass"
};
var callback = Function.createCallback(btnCommitKeypress, context);
Sys.UI.DomEvent.addHandler($get("btnCommit"),"keypress",callback);
}
function btnCommitKeypress(evt,context) {
alert(context.userName);
alert(context.password);
}
調用Function.createCallback的時候,第二個參數傳遞一個在訂閱事件處理方法的範圍內定義的對象(Object)。