Obtenir le nom du type d'un objet en JavaScript
Alors que Java propose la méthode class.getName() pour récupérer le type d'un objet , JavaScript n'a pas d'équivalent direct. Cependant, plusieurs techniques peuvent être utilisées pour obtenir un résultat similaire.
Une approche consiste à modifier le prototype de l'objet pour ajouter une fonction getName() :
Object.prototype.getName = function() { var funcNameRegex = /function (.{1,})\(/; var results = (funcNameRegex).exec((this).constructor.toString()); return (results && results.length > 1) ? results[1] : """"; };
Avec ce hack, tous les objets seront J'ai maintenant une méthode getName() qui renvoie le nom du constructeur sous forme de chaîne.
Une autre option consiste à utiliser la propriété constructeur. Bien que cela fonctionne généralement pour tester le type d'un objet comme ceci :
var myArray = [1,2,3]; (myArray.constructor == Array); // true
Cependant, certaines mises en garde peuvent briser sa fiabilité, comme l'héritage multiple ou les objets créés sans utiliser le mot-clé "new".
L'opérateur instanceof est une autre alternative, mais elle a aussi ses limites. Il ne fonctionne pas pour les valeurs littérales et nécessite que l'objet soit créé à l'aide du constructeur correct.
Une autre approche consiste à utiliser la propriété constructor.name, même si elle peut ne pas convenir à IE9 ou version antérieure. Pour des raisons de compatibilité, une solution singe-patch peut être implémentée :
if (Function.prototype.name === undefined && Object.defineProperty !== undefined) { Object.defineProperty(Function.prototype, 'name', { get: function() { var funcNameRegex = /function\s([^(]{1,})\(/; var results = (funcNameRegex).exec((this).toString()); return (results && results.length > 1) ? results[1].trim() : """"; }, set: function(value) {} }); }
Enfin, Object.prototype.toString peut être utilisé pour déterminer le type de tous les types intégrés, mais il renvoie "Object" pour tous types définis par l'utilisateur.
Il est important d'être conscient des mises en garde et des limites de chaque approche lors du choix d'une méthode pour déterminer le type d'un objet en JavaScript.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!