Using partial application on event binding.

from jquery ninja book

by dandoyon

HTML

<ul id="results"></ul>

CSS

#results li.pass { color: green; }
#results li.fail { color: red; }

JavaScript

function assert(value, desc) {
    var li = document.createElement("li");
    li.className = value ? "pass" : "fail";
    li.appendChild(document.createTextNode(desc));
    document.getElementById("results").appendChild(li);
}

// http://osteele.com/sources/javascript/functional/
Function.prototype.partial = function() {
    var fn = this,
        args = Array.prototype.slice.call(arguments);
    return function() {
        var arg = 0;
        for (var i = 0; i < args.length && arg < arguments.length; i++)
        if (args[i] === undefined) args[i] = arguments[arg++];
        return fn.apply(this, args);
    };
};

var bindClick = document.body.addEventListener.partial("click", undefined, false);
bindClick(function() {
    assert(true, "Click event bound via curried function.");
});