Entiendo por qué necesita utilizar Object.prototype.toString()
o String()
para comprobar el tipo de matrices, pero no es typeof suficiente para funciones de verificación de tipo y cadenas? Por ejemplo, la polyfill en MDN para Array.isArray utiliza:¿Por qué usar toString() para tipear argumentos que puede verificar con typeof?
Object.prototype.toString.call(arg) == '[object Array]';
que está bastante claro en el caso de las matrices porque no se puede utilizar para comprobar si hay typeof
matrices. Valentine utiliza instanceof para esto:
ar instanceof Array
Pero para cuerdas/funciones/booleanos/números, por qué no usar typeof
?
jQuery y Underscore tanto el uso de algo como esto para comprobar si hay funciones:
Object.prototype.toString.call(obj) == '[object Function]';
No es eso lo mismo que hacer esto?
typeof obj === 'function'
o incluso esto?
obj instanceof Function
Tenga en cuenta que no funciona con Promises, al menos en Chrome en Firefox. 'typeof mypromise === 'object',' toString.call (mypromise) ===' [Object] '', pero' mypromise instanceof Promise === true' – Hurelu