Я вижу в Mozilla polyfill fn.bind()
следующим образом:
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...
};
}
Я не понимаю, почему мы должны проверять тип this
... потому что, если мы говорим, что fn.bind()
и fn
- это функция, то она будет работать, а если fn
не является функции, то fn.bind
никогда не достигнет Function.prototype.bind
прототипом наследования. Итак, почему мы должны проверять тип this
?