2012-06-19 3 views
4

Le typeof ne fonctionne pas parfaitement bien, typeof null renvoie par exemple object. Existe-t-il une meilleure alternative à ce type d'alternative améliorée intégrée ou sur mesure?typeof fonction correctif/alternative

+0

Que voulez-vous réaliser? Vous pouvez vérifier null avec 'if (variable === null)' – Niko

+0

Une meilleure alternative à 'typeof' généralement, personnalisé ou intégré. –

+0

Qu'est-ce que vous essayez de faire? Une meilleure alternative à 'typeof', mais pour quoi? – sachleen

Répondre

9

Voir Fixing the JavaScript typeof Operator.

En un mot, vous pouvez utiliser cette fonction:

var toType = function (obj) { 
    return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); 
} 

toType(null); // -> "null" 
toType({});  // -> "object" 
toType([]);  // -> "array" 
toType("asdf"); // -> "string" 
toType(/asdf/); // -> "regexp" 
// etc. 

Vous devriez voir l'article pour les détails sur la raison pour laquelle cela fonctionne comme il le fait et exactement ce que vous pouvez attendre. Il retournera toujours une chaîne, tout comme typeof.

+0

Vous pouvez utiliser 'var toString = Object.prototype.toString; toString.call (obj) .slice (8, -1) 'qui empêche la création d'objets vides –