Mengapakah `typeof` mengembalikan \'objek\' untuk tatasusunan objek dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-02 20:12:02
asal
881 orang telah melayarinya

Why does `typeof` return

Pemeriksaan Kelakuan JavaScript Unik: Mengapa Tatasusunan Objek Memulangkan "objek" Daripada "tatasusunan"

Dalam JavaScript, fenomena yang menarik timbul apabila bekerja dengan tatasusunan objek. Yang menghairankan, walaupun sifatnya seperti tatasusunan, ia diklasifikasikan sebagai objek apabila operator jenis digunakan. Percanggahan ini boleh menjadi agak membingungkan, terutamanya dalam kes seperti di bawah:

$.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
    }
});​
Salin selepas log masuk

Tingkah laku ini berpunca daripada keanehan dalam spesifikasi JavaScript yang menganggap objek Array sebagai Objek jenis. Walau bagaimanapun, ini tidak membayangkan bahawa tatasusunan dan objek boleh ditukar ganti. Untuk menentukan dengan tepat sama ada pembolehubah mewakili tatasusunan, gunakan kaedah berikut:

  • instanceof Array: Menyemak sama ada pembolehubah ialah tika constructor Array.
  • Array.isArray(data): Kaedah asli yang direka khusus untuk menentukan sama ada pembolehubah ialah tatasusunan.
  • Object.prototype.toString.call(data) == '[object Array]': Pendekatan yang boleh dipercayai yang menggunakan kaedah toString prototaip Objek.
  • jQuery.isArray(data): Pilihan yang mudah untuk jQuery pengguna.

Dengan menggunakan teknik ini, anda boleh membezakan dengan tepat sama ada pembolehubah ialah tatasusunan, walaupun ia mengandungi objek, menyelesaikan percanggahan ketara antara tingkah laku seperti tatasusunan dan pengelasan objek.

Atas ialah kandungan terperinci Mengapakah `typeof` mengembalikan \'objek\' untuk tatasusunan 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