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"
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"
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"
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
Cependant, s'appuyer sur la propriété « constructeur » est problématique car :
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
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]"
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!