There is not technical differents, but there is a performance and bug-free difference. All the functions in function.prototype have been written by some of the best developers in a way to follow a certain specification which all the programmers expect. And of course have been tested very well.
It is always better not to reinvent the wheel, and always true that this developers will have do a better job than we will ever do.
Note 1: I8 now is below 0.3 % of usage, so don't mind if it does not support bind. There are many chances not support many things at your site.
Note 2: the implementation of bind in chrome is this:
write in dev-console in chrome: Function.prototype.bind
and you get as result this
function(e,t){var n=this;return null!=t&&(t=Array.from(t)),function(){return n.apply(e,t||arguments)}}
Bonus: Here is a very similar implementation for more clean code(copy the .bind method from Prototype.js):
Function.prototype.bind = function(){
var fn = this, args = Array.prototype.slice.call(arguments),
object = args.shift();
return function(){
return fn.apply(object,
args.concat(Array.prototype.slice.call(arguments)));
};
};