Function.prototype.bind and friends

I thought bind was only used to attach a new this to a function. Turns out I had it wrong all along. You can use it to partially apply functions.

I have been doing this in a different way.

Suppose you want a somewhat generic iterator function. This was the only way I knew how to make it happen.

function partiallyApplyMe(firstArg){
	return function(secondArg){
    	console.log(firstArg+secondArg);
    }
}
_.each(list,partiallyApplyMe('list:'));
_.each(obj,partiallyApplyMe('obj:'));

The alternative is to simply write the iterator function with the following function declaration: function iterator(firstArg,secondArg) and then use it like so:

_.each(list,iterator.bind(undefined,'list:')); _.each(obj,iterator.bind(undefined,'obj:'));
//or if you like ES5:
list.forEach(iterator.bind(undefined,'list:'));
//not quite the same...but you get the picture
Object.prototype.keys(list).forEach(iterator.bind(undefined,'obj:'));

This is far simpler and I will be using this in all new code I write.