Зачем использовать toString () для проверки типов аргументов, которые можно проверить с помощью typeof?

Я понимаю, почему вам нужно использовать Object.prototype.toString () или String () для массивов проверки типов, но это не так. typeof достаточно для функций проверки типов и строк? Например, полифил в MDN для Array.isArray использует:

Object.prototype.toString.call(arg) == '[object Array]';

В случае массивов это довольно ясно, потому что вы не можете использовать typeof для проверки массивов. Валентин использует для этого instanceof :

ar instanceof Array

Но для строк / функций / логических значений / чисел почему бы не использовать typeof ?

jQuery и Подчеркивание оба используют что-то вроде этого для проверки функций:

Object.prototype.toString.call(obj) == '[object Function]';

Разве это не эквивалентно выполнению этого?

typeof obj === 'function'

или даже этого?

obj instanceof Function

9
задан Nathan Kleyn 13 April 2013 в 20:53
поделиться