Cuando JavaScript llama a COM para pasar una matriz, la interfaz COM recibe un objeto de tipo VARIANT, como una matriz. El tipo vt de este objeto es VT_DISPATCH, por lo que su valor representa un puntero de tipo IDispatch.
Un puntero de tipo IDispatch indica que el objeto de matriz es en realidad un objeto de matriz integrado de JavaScript. En el lado de JavaScript, podemos obtener el tamaño de la matriz a través del atributo de longitud. Luego, aquí, podemos obtener la matriz a través de GetIDsOfNames. función y la función Invocar longitud, de modo que el contenido de la matriz pueda ser dinámicamente variable.
El siguiente es el contenido citado: // Obtener la longitud de la matriz } |
En este momento, nLength obtiene la longitud de la matriz.
Una matriz en JavaScript es un objeto, y el contenido de la matriz son los atributos del objeto, que se crean dinámicamente. El método de consulta de estos atributos es algo similar al método de consulta de longitud. También son funciones GetIDsOfNames e Invoke. La principal diferencia es la diferencia en los nombres. El nombre del atributo del objeto elemento en la matriz se crea dinámicamente, es decir, se puede obtener mediante subíndices. Por lo tanto, aquí, el nombre del atributo también se puede obtener mediante subíndices. sigue:
El siguiente es el contenido citado: para ( int i = 0 ; i < nLongitud; ++ i) |
Por lo tanto, al llamar a estos dos métodos de atributos, todos los objetos de matriz de JavaScript se pueden facilitar en la interfaz COM.
¿Cuáles son los beneficios de esto? Al mirar muchos recursos en línea, descubrí que la mayoría usa SAFEARRAY para procesar la estructura y pasarla a la interfaz COM. Sin embargo, SAFEARRAY no es compatible con MIDL y el objeto JavaScript en sí no lo es. compatible Para que este contenido funcione en modo SAFEARRAY, debe cambiar entre VBScript y JavaScript, lo que causará dificultades en la escritura del programa y confusión para el personal de mantenimiento.
Utilice JavaScript directamente para pasar la matriz e integrar la matriz de cualquier manera. No es necesario integrar la estructura a través del método SAFEARRAY. Al mismo tiempo, dado que cada objeto (elemento) en JavaScript tiene su propia información de tipo, las matrices en JavaScript son la mejor alternativa (método de transferencia) a las estructuras en C.