Maison > interface Web > js tutoriel > Comment puis-je obtenir le nom du type d'un objet en JavaScript ?

Comment puis-je obtenir le nom du type d'un objet en JavaScript ?

Barbara Streisand
Libérer: 2024-12-08 15:25:11
original
743 Les gens l'ont consulté

How Can I Get the Name of an Object's Type in JavaScript?

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] : """";
};
Copier après la connexion

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
Copier après la connexion

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) {}
  });
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal