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

Linda Hamilton
Lepaskan: 2024-11-03 12:26:29
asal
841 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan