mozilla's bind function question
<p>Had a question about a implementation of bind function that I found on Mozilla's site.  For the most part it makes sense to me, but I cant figure out what this check is for... </p>

<pre><code>this instanceof nop ? this : ( obj || {} ) 
</code></pre>

<p>in the bind function.  Obviously its checking if 'this' is the empty function, but why would you need to bind the empty function.  I have tried it in firebug, it works, but what is the point?  Just trying to increase my javascript knowledge so any help would be appreciated.</p>

<pre><code>if ( !Function.prototype.bind ) {

  Function.prototype.bind = function( obj ) {

    var slice = [].slice,
    args = slice.call(arguments, 1), 
    self = this, 
    nop = function () {}, 
    bound = function () {
      return self.apply( this instanceof nop ? this : ( obj || {} ), 
                          args.concat( slice.call(arguments) ) );    
    };

    nop.prototype = self.prototype;

    bound.prototype = new nop();

    return bound;
  };
}
</code></pre>
