Quando JavaScript chama COM para passar um array, a interface COM recebe um objeto do tipo VARIANT, como array. O tipo vt deste objeto é VT_DISPATCH, portanto seu valor representa um ponteiro do tipo IDispatch.
Um ponteiro do tipo IDispatch indica que o objeto array é na verdade um objeto array integrado do JavaScript. No lado do JavaScript, podemos obter o tamanho do array por meio do atributo length. função e o comprimento da função Invoke, para que o conteúdo da matriz possa ser dinamicamente variável.
A seguir está o conteúdo citado: // Obtém o comprimento do array } |
Neste momento, nLength obtém o comprimento do array.
Um array em JavaScript é um objeto, e o conteúdo do array são os atributos do objeto, que são criados dinamicamente. O método de consulta desses atributos é um pouco semelhante ao método de consulta de comprimento. Eles também são funções GetIDsOfNames e Invoke. A principal diferença é a diferença nos nomes. O nome do atributo do objeto elemento no array é criado dinamicamente, ou seja, pode ser obtido por meio de subscritos. Portanto, aqui, o nome do atributo também pode ser obtido por meio de subscritos, como. segue:
A seguir está o conteúdo citado: for ( int i = 0 ; i < nComprimento; ++ i) |
Portanto, ao chamar esses dois métodos de atributos, todos os objetos de array JavaScript podem ser facilitados na interface COM.
Quais são os benefícios disso? Ao examinar muitos recursos online, descobri que a maioria deles usa SAFEARRAY para processar a estrutura e passá-la para a interface COM. No entanto, SAFEARRAY não é compatível com MIDL e o objeto JavaScript em si não é. suportado. Para este conteúdo, para operar no modo SAFEARRAY, você precisa alternar entre VBScript e JavaScript, o que causará dificuldade na escrita do programa e confusão para o pessoal de manutenção.
Use JavaScript diretamente para passar o array e integrá-lo de qualquer forma. Não há necessidade de integrar a estrutura por meio do método SAFEARRAY. Ao mesmo tempo, como cada objeto (elemento) em JavaScript possui suas próprias informações de tipo, arrays em JavaScript são a melhor alternativa (método de transferência) para estruturas em C.