Глядя под капотом в UnderscoreJS, я вижу:Почему UnderscoreJS использует toString.call() вместо typeof?
_.isFunction = function(obj) {
return toString.call(obj) == '[object Function]';
};
_.isString = function(obj) {
return toString.call(obj) == '[object String]';
};
_.isNumber = function(obj) {
return toString.call(obj) == '[object Number]';
};
Это кажется странным выбором. Почему бы просто не использовать typeof, чтобы определить, является ли значение строкой, функцией или номером? Есть ли увеличение производительности при использовании toString? Является ли typeof не поддерживаться более старыми браузерами?
'typeof' существует в каждой версии JavaScript с версии 1.1 в 1996 году. –