Ketika JavaScript memanggil COM untuk meneruskan array, antarmuka COM menerima objek bertipe VARIANT, seperti array. Tipe vt dari objek ini adalah VT_DISPATCH, jadi nilainya mewakili penunjuk tipe IDispatch.
Pointer bertipe IDispatch menunjukkan bahwa objek array sebenarnya adalah objek array bawaan JavaScript. Di sisi JavaScript, kita bisa mendapatkan ukuran array melalui atribut panjang. Lalu di sini, kita bisa mendapatkan array melalui GetIDsOfNames fungsi dan fungsi Invoke, sehingga isi array dapat diubah secara dinamis.
Berikut isi kutipannya: // Dapatkan panjang array } |
Saat ini, nLength mendapatkan panjang array.
Array dalam JavaScript adalah sebuah objek, dan konten array adalah atribut dari objek tersebut, yang dibuat secara dinamis. Metode kueri atribut ini agak mirip dengan metode kueri panjangnya. Mereka juga merupakan fungsi GetIDsOfNames dan Invoke. Perbedaan utamanya adalah perbedaan nama. Nama atribut objek elemen dalam array dibuat secara dinamis, yaitu dapat diperoleh melalui subskrip. Oleh karena itu, di sini nama atribut juga dapat diperoleh melalui subskrip berikut:
Berikut isi kutipannya: untuk ( int i = 0 ; i < nPanjang; ++ i) |
Oleh karena itu, dengan memanggil dua metode atribut ini, semua objek array JavaScript dapat difasilitasi di antarmuka COM.
Apa manfaatnya? Saat melihat banyak sumber online, saya menemukan bahwa kebanyakan dari mereka menggunakan SAFEARRAY untuk memproses struktur dan meneruskannya ke antarmuka COM. Namun, SAFEARRAY tidak didukung di MIDL, dan objek JavaScript itu sendiri tidak didukung didukung. Agar konten ini dapat beroperasi dalam mode SAFEARRAY, Anda perlu beralih antara VBScript dan JavaScript, yang akan menyebabkan kesulitan dalam penulisan program dan kebingungan bagi personel pemeliharaan.
Gunakan JavaScript secara langsung untuk meneruskan array dan mengintegrasikan array dengan cara apa pun. Tidak perlu mengintegrasikan struktur melalui metode SAFEARRAY. Pada saat yang sama, karena setiap objek (elemen) dalam JavaScript memiliki informasi tipenya sendiri, array dalam JavaScript adalah alternatif (metode transfer) terbaik untuk struktur di C.