Heim  >  Artikel  >  Web-Frontend  >  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?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 12:26:29839Durchsuche

Why Does `typeof` Return

Den Widerspruch verstehen: Warum typeof Array mit Objekten „Objekt“ zurückgibt

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.

Anhand eines Beispiels wollen wir das Problem veranschaulichen:

<code class="javascript">$.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
    }
});</code>

Während console.dir(data) die Variable korrekt als Array identifiziert, ist typeof Daten geben unpassend „Objekt“ zurück.

Die Erklärung liegt in der besonderen Spezifikation von JavaScript, bei der der Operator „typeof“ den Typ der internen [[Class]]-Eigenschaft des Objekts zurückgibt. Im Fall von Arrays ist ihre [[Class]]-Eigenschaft auf „Array“ festgelegt, 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:

  • Dateninstanz von Array: Überprüft, ob die Variable eine Instanz des Array-Typs ist.
  • Array.isArray(data): Eine Methode, die speziell dafür entwickelt wurde Bestimmen Sie, 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 in ihrem JavaScript-Code effektiv verarbeiten.

Das obige ist der detaillierte Inhalt vonWarum gibt „typeof“ „Object“ für Arrays zurück, die Objekte in JavaScript enthalten?. 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