I see in the [Mozilla polyfill](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill) of `fn.bind()` like this:

```
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');
    }

    // other code omitted here...

  };
}

```

I don't understand why we have to check the type of `this`... because if we say `fn.bind()` and `fn` is a function, then it will work, and if `fn` is not a function, then `fn.bind` will never reach `Function.prototype.bind` by prototypal inheritance. So why do we have to check the type of `this`?