Skip to content

Instantly share code, notes, and snippets.

@thinkphp
Created November 29, 2011 10:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thinkphp/1404261 to your computer and use it in GitHub Desktop.
Save thinkphp/1404261 to your computer and use it in GitHub Desktop.
currying
function addEvent(elem, evType, fn, useCapture) {
if(elem.addEventListener) {
return elem.addEventListener(evType, fn, useCapture);
} else if(elem.attachEvent){
var r = elem.attachEvent('on'+evType,fn);
return r;
} else {
elem['on'+evType] = fn;
}
}
var elem = document.getElementById('myButton');
Function.prototype.curry = function(scope) {
var fn = this,
scope = scope || window,
args = [];
for(var i=1,j=arguments.length;i<j;i++) {
args.push(arguments[i]);
}
return function() {
for(var i=0,j=arguments.length;i<j;i++) {
args.push(arguments[i]);
}
return fn.apply(scope, args);
}
}
function solve(name, surname) {
console.log(name + ", " + surname + " Man You clicked on button with ID: " + this.id);
}
function fn() {
var user = document.getElementById('myText').value;
var call = solve.curry(this);
call(user,"Adrian");
}
addEvent(elem, 'click', fn, false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment