Maison > interface Web > js tutoriel > Comment obtenir le nom de classe d'un objet en JavaScript ?

Comment obtenir le nom de classe d'un objet en JavaScript ?

Barbara Streisand
Libérer: 2024-12-08 13:27:17
original
452 Les gens l'ont consulté

How to Get the Class Name of an Object in JavaScript?

En JavaScript, il n'existe pas d'équivalent direct à la méthode Java 'class.getName()' pour obtenir le nom de la classe d'un objet.

Mise à jour ES2015 :

class Foo {}
console.log(Foo.name); // "Foo"
Copier après la connexion

Pour les objets non-classe, la désignation 'classe' peut être trouvée en utilisant le Propriété 'thing.constructor.name'.

var obj = {name: "John"};
console.log(obj.constructor.name); // "Object"
Copier après la connexion

Hacks et alternatives :

Bien qu'il n'y ait pas d'équivalent natif 'class.getName()', il existe divers hacks et méthodes alternatives pour obtenir le nom de la classe :

Object.prototype.getName() Hack (pas recommandé) :

Ce hack modifie le prototype de l'objet et ajoute une fonction 'getName()' à tous les objets, leur permettant de renvoyer leur nom de constructeur sous forme de chaîne.

Object.prototype.getName = function() {
  var funcNameRegex = /function (.{1,})\(/;
  var results = funcNameRegex.exec(this.constructor.toString());
  return results && results.length > 1 ? results[1] : "";
};

var obj = {name: "John"};
console.log(obj.getName()); // "Object"
Copier après la connexion

Utilisation de la propriété Constructeur (problématique) :

Chaque objet a une propriété « constructeur » qui pointe vers la fonction constructeur qui l'a créé.

var myArray = [1, 2, 3];
console.log(myArray.constructor === Array); // true
Copier après la connexion

Cependant, s'appuyer sur la propriété « constructeur » est problématique car :

  • Elle peut ne pas fournir d'informations précises dans les cas où l'héritage est impliqué.
  • Il brise le cross-frame et le cross-window.

Utiliser instanceof (également problématique) :

L'opérateur 'instanceof' peut également être utilisé pour la vérification de type.

var myArray = [1, 2, 3];
console.log(myArray instanceof Array); // true
Copier après la connexion

Cependant, 'instanceof' ne fonctionne pas pour les valeurs littérales et interrompt également les erreurs croisées. cadre et fenêtre croisée.

Utilisation Object.prototype.toString :

Object.prototype.toString renvoie une représentation sous forme de chaîne du type de l'objet.

console.log(Object.prototype.toString.call('abc')); // "[object String]"
console.log(Object.prototype.toString.call(/abc/)); // "[object RegExp]"
Copier après la connexion

Bien que cette approche fournisse des informations de type pour les types intégrés, il renvoie 'Objet' pour tous les éléments définis par l'utilisateur types.

Mises en garde :

Toutes les méthodes susmentionnées comportent des mises en garde et peuvent ne pas être fiables dans toutes les circonstances. Tenez compte de la méthode de construction de l'objet, en particulier lorsqu'il s'agit d'héritage et de fonctions anonymes.

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