Mengapa menggunakan Object.prototype.toString dan bukannya Function.prototype.toString atau lain-lain? Ini berkaitan dengan kaedah tafsiran toString mereka. Berikut ialah penjelasan Object.prototype.toString dalam ECMA:
Object.prototype.toString( )
Apabila kaedah toString dipanggil, langkah berikut diambil:
1. Dapatkan sifat [[Kelas]] objek ini.
2. Kira nilai rentetan dengan menggabungkan tiga rentetan “[objek “, Hasil (1) dan “]”.
3. Keputusan Pulangan (2)
Prosesnya adalah seperti berikut: 1. Dapatkan nama kelas (jenis objek) objek. 2. Kemudian gabungkan [objek, nama kelas yang diperoleh,] dan kembalikan.
ECMA mempunyai perihalan Array berikut:
Sifat [[Kelas]] objek yang baru dibina ditetapkan kepada "Array".
Jadi kami menggunakan kod berikut untuk mengesan tatasusunan:
function isArray(o) { return Object.prototype.toString.call(o) === '[object Array]';
Kaedah ini bukan sahaja menyelesaikan masalah merentas halaman instanceof, tetapi juga menyelesaikan masalah kaedah pengesanan atribut Ia benar-benar rampasan kuasa dan penyelesaian yang baik.
Di samping itu, penyelesaian ini juga boleh digunakan untuk menentukan objek Tarikh, Fungsi dan jenis lain.
Terdapat beberapa kaedah lain:
var arr = []; kembalikan contoh Array
Jika ada kaedah lain yang bagus, sila siarkan.