// prototype.js function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } }>Uhm, nothing in .bind() that doesn't already exist in JavaScript: The .call() and .apply() methods allow you to call a function in the context of the object passed. I don't see how that's different than what .bind() does.