Guardando sotto il cofano in UnderscoreJS, vedo:Perché UnderscoreJS usa toString.call() invece di 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]';
};
Questo mi sembra una scelta strana. Perché non usare solo typeof per determinare se un valore è una stringa, una funzione o un numero? C'è un guadagno in termini di prestazioni usando toString? Typeof non è supportato dai browser più vecchi?
'typeof' esiste in ogni versione di JavaScript dalla versione 1.1 nel 1996. –