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:
Durch das Verständnis dieser Besonderheit und die Verwendung dieser Techniken können Entwickler Arrays von Objekten effektiv verarbeiten in ihrem JavaScript-Code.
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