Home > Web Front-end > JS Tutorial > body text

Why Does `typeof` Return \'Object\' for Arrays Containing Objects in JavaScript?

Linda Hamilton
Release: 2024-11-03 12:26:29
Original
839 people have browsed it

Why Does `typeof` Return

Understanding the Contradiction: Why typeof Array with Objects Returns "Object"

Developers may encounter a surprising phenomenon: when invoking typeof on an array containing objects, it inexplicably returns "object" instead of "array." This article delves into this seemingly contradictory behavior.

By examining an example, let's illustrate the issue:

<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>
Copy after login

While console.dir(data) correctly identifies the variable as an array, typeof data incongruously returns "Object."

The explanation lies in JavaScript's peculiar specification, where the typeof operator returns the type of the object's internal [[Class]] property. In the case of arrays, their [[Class]] property is set to "Array," but when surrounded by objects, the [[Class]] property changes to "Object."

To ensure accurate type checking, developers can employ various approaches:

  • data instanceof Array: Checks if the variable is an instance of the Array type.
  • Array.isArray(data): A method specifically designed to determine if an object is an array.
  • Object.prototype.toString.call(data) == '[object Array]': A reliable and widely accepted method for array detection.
  • $.isArray(data): A jQuery-specific function designed to check for arrays.

By understanding this peculiarity and utilizing these techniques, developers can effectively handle arrays of objects in their JavaScript code.

The above is the detailed content of Why Does `typeof` Return \'Object\' for Arrays Containing Objects in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template