Heim > Web-Frontend > js-Tutorial > Wie erhalte ich den Klassennamen eines Objekts in JavaScript?

Wie erhalte ich den Klassennamen eines Objekts in JavaScript?

Barbara Streisand
Freigeben: 2024-12-08 13:27:17
Original
447 Leute haben es durchsucht

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

In JavaScript gibt es kein direktes Äquivalent zur Java-Methode „class.getName()“, um den Namen einer Objektklasse abzurufen.

ES2015-Update :

class Foo {}
console.log(Foo.name); // "Foo"
Nach dem Login kopieren

Für Nicht-Klassenobjekte kann die Bezeichnung „Klasse“ mithilfe von gefunden werden 'thing.constructor.name'-Eigenschaft.

var obj = {name: "John"};
console.log(obj.constructor.name); // "Object"
Nach dem Login kopieren

Hacks und Alternativen:

Obwohl es kein natives „class.getName()“-Äquivalent gibt, gibt es welche verschiedene Hacks und alternative Methoden zum Erhalten des Klassennamens:

Object.prototype.getName() Hack (nicht empfohlen):

Dieser Hack modifiziert den Objektprototyp und fügt allen Objekten eine „getName()“-Funktion hinzu, die es ihnen ermöglicht, ihren Konstruktornamen als String zurückzugeben.

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"
Nach dem Login kopieren

Verwendung der Constructor-Eigenschaft (problematisch):

Jedes Objekt hat eine „Constructor“-Eigenschaft, die auf die Konstruktorfunktion verweist hat es erstellt.

var myArray = [1, 2, 3];
console.log(myArray.constructor === Array); // true
Nach dem Login kopieren

Es ist jedoch problematisch, sich auf die Eigenschaft „Konstruktor“ zu verlassen, weil:

  • Sie liefert möglicherweise keine genauen Informationen in Fällen, in denen es um Vererbung geht.
  • Es unterbricht rahmen- und fensterübergreifend.

Verwenden von „instanceof“. (auch problematisch):

Der Operator „instanceof“ kann auch zur Typprüfung verwendet werden.

var myArray = [1, 2, 3];
console.log(myArray instanceof Array); // true
Nach dem Login kopieren

Allerdings funktioniert „instanceof“ nicht für Literalwerte und bricht auch ab rahmen- und fensterübergreifend.

Verwenden Object.prototype.toString:

Object.prototype.toString gibt eine Zeichenfolgendarstellung des Objekttyps zurück.

console.log(Object.prototype.toString.call('abc')); // "[object String]"
console.log(Object.prototype.toString.call(/abc/)); // "[object RegExp]"
Nach dem Login kopieren

Während dieser Ansatz Typinformationen für integrierte Typen bereitstellt, Es gibt „Objekt“ für alle benutzerdefinierten Werte zurück Typen.

Vorbehalte:

Alle oben genannten Methoden haben Einschränkungen und sind möglicherweise nicht unter allen Umständen zuverlässig. Berücksichtigen Sie die Konstruktionsmethode des Objekts, insbesondere wenn es um Vererbung und anonyme Funktionen geht.

Das obige ist der detaillierte Inhalt vonWie erhalte ich den Klassennamen eines Objekts in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage