Claude Claude - 3 months ago 19
Javascript Question

How to handle lack of JavaScript Object.bind() method in IE 8

I am writing a bit of JavaScript that uses the


funcabc = function(x, y, z){
this.myx = x;
this.playUB = function(w) {
if ( this.myx === null ) {
// do blah blah

// do other stuff
}; = this.playUB.bind(this);

Since I develop in WinXP with Firefox and sometimes test in Win7 with IE 9 or 10, I did not notice or pay attention to the fact that IE8 and below do not support

This particular script does not use the canvas, so I'm a little hesitant to write off all IE 8 users.

Is there a standard work-around?

I'm getting around sort of okay in JavaScript, but I'm still a bit of a noob. So forgive me if the solution is totally obvious.


There is a good compatability script on this page:

Just copy and paste it into your script.

EDIT: placing the script below for clarity.

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   =, 1),
        fToBind = this,
        fNOP    = function() {},
        fBound  = function() {
          return fToBind.apply(this instanceof fNOP && oThis
                 ? this
                 : oThis,

    fNOP.prototype = this.prototype;
    fBound.prototype = new fNOP();

    return fBound;