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
Barbara StreisandOriginal
2024-12-08 13:27:17406Durchsuche

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"

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"

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"

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

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

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]"

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!

Stellungnahme:
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