Heim >Web-Frontend >js-Tutorial >Wie kann ich den Namen eines Objekttyps in JavaScript abrufen?

Wie kann ich den Namen eines Objekttyps in JavaScript abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-08 15:25:11732Durchsuche

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

Den Namen eines Objekttyps in JavaScript abrufen

Während Java die Methode class.getName() zum Abrufen des Typs eines Objekts anbietet , JavaScript fehlt ein direktes Äquivalent. Es können jedoch mehrere Techniken eingesetzt werden, um ein ähnliches Ergebnis zu erzielen.

Ein Ansatz besteht darin, den Prototyp des Objekts zu ändern, um eine getName()-Funktion hinzuzufügen:

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

Mit diesem Hack werden alle Objekte Sie haben jetzt eine getName()-Methode, die den Namen des Konstruktors als Zeichenfolge zurückgibt.

Eine andere Möglichkeit besteht darin, die Konstruktoreigenschaft zu verwenden. Während es im Allgemeinen zum Testen des Typs eines Objekts wie folgt funktioniert:

var myArray = [1,2,3];
(myArray.constructor == Array); // true

Es gibt jedoch bestimmte Einschränkungen, die seine Zuverlässigkeit beeinträchtigen können, wie z. B. Mehrfachvererbung oder Objekte, die ohne Verwendung des Schlüsselworts „new“ erstellt wurden.

Der Instanzoperator ist eine weitere Alternative, hat aber auch seine Einschränkungen. Es funktioniert nicht für Literalwerte und erfordert, dass das Objekt mit dem richtigen Konstruktor erstellt wird.

Ein anderer Ansatz besteht darin, die Eigenschaft „constructor.name“ zu verwenden, obwohl diese möglicherweise nicht für IE9 oder niedriger geeignet ist. Aus Kompatibilitätsgründen kann eine Monkey-Patch-Lösung implementiert werden:

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) {}
  });
}

Schließlich kann Object.prototype.toString verwendet werden, um den Typ für alle integrierten Typen zu bestimmen, es gibt jedoch für alle „Object“ zurück benutzerdefinierte Typen.

Bei der Auswahl einer Methode zur Bestimmung des Typs eines Objekts in JavaScript ist es wichtig, sich der Vorbehalte und Einschränkungen jedes Ansatzes bewusst zu sein.

Das obige ist der detaillierte Inhalt vonWie kann ich den Namen eines Objekttyps in JavaScript abrufen?. 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