„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt „typeof“ „Object“ für Arrays zurück, die Objekte in JavaScript enthalten?

Warum gibt „typeof“ „Object“ für Arrays zurück, die Objekte in JavaScript enthalten?

Veröffentlicht am 08.11.2024
Durchsuche:515

Why Does `typeof` Return \

Den Widerspruch verstehen: Warum typeof-Arrays mit Objekten „Objekt“ zurückgeben

Entwickler können auf ein überraschendes Phänomen stoßen: beim Aufrufen von typeof für ein Array Wenn es Objekte enthält, gibt es aus unerklärlichen Gründen „Objekt“ statt „Array“ zurück. Dieser Artikel befasst sich mit diesem scheinbar widersprüchlichen Verhalten.

Lassen Sie uns das Problem anhand eines Beispiels veranschaulichen:

$.ajax({
    url: 'http://api.twitter.com/1/statuses/user_timeline.json',
    data: { screen_name: 'mick__romney'},
    dataType: 'jsonp',
    success: function(data) {
        console.dir(data); //Array[20]
        alert(typeof data); //Object
    }
});

Während console.dir(data) die Variable korrekt als Array identifiziert, gibt typeof data fälschlicherweise „Object“ zurück.

Die Erklärung liegt in der besonderen Spezifikation von JavaScript, wo der Operator „typeof“ steht gibt den Typ der internen [[Class]]-Eigenschaft des Objekts zurück. Im Fall von Arrays ist ihre [[Class]]-Eigenschaft auf „Array“ gesetzt, aber wenn sie von Objekten umgeben ist, ändert sich die [[Class]]-Eigenschaft in „Object“.

Um eine genaue Typprüfung sicherzustellen können Entwickler verschiedene Ansätze anwenden:

  • data instanceof Array: Überprüft, ob die Variable eine Instanz des Array-Typs ist.
  • Array.isArray(data): Eine Methode speziell Entwickelt, um festzustellen, ob ein Objekt ein Array ist.
  • Object.prototype.toString.call(data) == '[object Array]': Eine zuverlässige und weithin akzeptierte Methode zur Array-Erkennung.
  • $.isArray(data): Eine jQuery-spezifische Funktion zur Prüfung auf Arrays.

Durch das Verständnis dieser Besonderheit und die Verwendung dieser Techniken können Entwickler Arrays von Objekten effektiv verarbeiten in ihrem JavaScript-Code.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3