Rumah >hujung hadapan web >tutorial js >Mengapakah `typeof` Mengembalikan \'Objek\' untuk Tatasusunan yang Mengandungi Objek dalam JavaScript?

Mengapakah `typeof` Mengembalikan \'Objek\' untuk Tatasusunan yang Mengandungi Objek dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 12:26:29901semak imbas

Why Does `typeof` Return

Memahami Percanggahan: Mengapa jenis Array dengan Objek Mengembalikan "Objek"

Pembangun mungkin menghadapi fenomena yang mengejutkan: apabila menggunakan jenis pada tatasusunan mengandungi objek, ia mengembalikan "objek" dan bukannya "tatasusunan." Artikel ini menyelidiki tingkah laku yang kelihatan bercanggah ini.

Dengan meneliti contoh, mari kita jelaskan isu ini:

<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>

Sementara console.dir(data) mengenal pasti pembolehubah sebagai tatasusunan, jenis data secara tidak selaras mengembalikan "Objek."

Penjelasan terletak pada JavaScript yang unik spesifikasi, di mana operator jenis mengembalikan jenis harta dalaman [[Kelas]] objek. Dalam kes tatasusunan, sifat [[Kelas]] mereka ditetapkan kepada "Array", tetapi apabila dikelilingi oleh objek, sifat [[Kelas]] bertukar kepada "Objek."

Untuk memastikan pemeriksaan jenis yang tepat , pembangun boleh menggunakan pelbagai pendekatan:

  • data instanceof Array: Menyemak sama ada pembolehubah ialah satu instance of Array taip.
  • Array.isArray(data): Kaedah yang direka khusus untuk menentukan sama ada objek ialah tatasusunan.
  • Object.prototype.toString.call(data) == '[object Array ]': Kaedah yang boleh dipercayai dan diterima secara meluas untuk pengesanan tatasusunan.
  • $.isArray(data): Fungsi khusus jQuery yang direka untuk menyemak tatasusunan.

Dengan memahami keanehan ini dan menggunakan teknik ini, pembangun boleh mengendalikan tatasusunan objek dalam kod JavaScript mereka dengan berkesan.

Atas ialah kandungan terperinci Mengapakah `typeof` Mengembalikan \'Objek\' untuk Tatasusunan yang Mengandungi Objek dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn