/// <reference name="MicrosoftAjax.js"/>
function abc(a,b,c) {

}

var callBack = Function.createCallback(abc, null);
callBack("a", "b", "c");

function handleClickEvent(e) {
    var elmFiringEvent = e.target;

    // usuwa metodę obsługującą zdarzenie FiringEvent
    $removeHandler(elmFiringEvent, "click", handleClickEvent);
}

Sys.Application.add_init(function() {
    var button = $get("abc");

    // dołącza metodę obsługującą zdarzenie kliknięcia danego przycisku
    $addHandler(button, "click", handleClickEvent);
  
    var context = {extraData: "extra stuff here"} ;
    var del = Function.createDelegate(this, _Alert) ;
    var cb = Function.createCallback(del, context) ;
    $addHandler($get("abc"), "click", cb); 
});

function _Alert(sender, e) {

    var s = String.format(
        "this.Message='{0}', extra data='{1}'",
            this.Message,
            e.extraData
        ) ;
    alert(s) ;
} 

this.Message = "Witaj!";