mozilla .bind()
A silly example of one of the ways to use bind
by peterbenoit
HTML
<div>
JavaScript
var fruit = {
getColor: function (f) {
colors.getColor(f, this.gotColor.bind(this));
},
gotColor: function (t, color) {
var a = t == "apple" ? "An " : "A ";
$("div").text(a + t + " is " + color);
}
}
var colors = {
banana: "yellow",
apple: "red",
lime: "green",
getColor: function (t, cb) {
cb(t.toString(), this[t]);
}
}
// change the fruit parameter
fruit.getColor("banana");
if (!Function.prototype.bind) {
Function.prototype.bind = function (oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function () {},
fBound = function () {
return fToBind.apply(this instanceof fNOP && oThis ? this : oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
};
fNOP.prototype = this.prototype;
fBound.prototype = new fNOP();
return fBound;
};
}