Wenn JavaScript COM aufruft, um ein Array zu übergeben, empfängt die COM-Schnittstelle ein Objekt vom Typ VARIANT, z. B. ein Array. Der VT-Typ dieses Objekts ist VT_DISPATCH, sodass sein Wert einen Zeiger vom Typ IDispatch darstellt.
Ein Zeiger vom Typ IDispatch zeigt an, dass das Array-Objekt tatsächlich ein integriertes Array-Objekt von JavaScript ist. Auf der JavaScript-Seite können wir die Größe des Arrays über das Längenattribut ermitteln. Dann können wir das Array über GetIDsOfNames abrufen Funktion und die Länge der Invoke-Funktion, sodass der Inhalt des Arrays dynamisch variabel sein kann.
Nachfolgend der zitierte Inhalt: // Länge des Arrays ermitteln } |
Zu diesem Zeitpunkt erhält nLength die Länge des Arrays.
Ein Array in JavaScript ist ein Objekt, und der Inhalt des Arrays sind die Attribute des Objekts, die dynamisch erstellt werden. Die Abfragemethode dieser Attribute ähnelt in gewisser Weise der Abfragemethode der Länge. Sie sind auch GetIDsOfNames- und Invoke-Funktionen. Der Hauptunterschied besteht in den Namensunterschieden des Elementobjekts im Array, das dynamisch erstellt werden kann. Daher kann der Attributname hier auch durch Subskription erhalten werden folgt:
Nachfolgend der zitierte Inhalt: for ( int i = 0 ; i < nLength; ++ i) |
Durch den Aufruf dieser beiden Attributmethoden können daher alle JavaScript-Array-Objekte in der COM-Schnittstelle unterstützt werden.
Was sind die Vorteile davon? Bei der Betrachtung vieler Online-Ressourcen habe ich festgestellt, dass die meisten von ihnen SAFEARRAY verwenden, um die Struktur zu verarbeiten und an die COM-Schnittstelle zu übergeben. Allerdings wird SAFEARRAY in MIDL nicht unterstützt, und das JavaScript-Objekt selbst nicht Damit dieser Inhalt im SAFEARRAY-Modus ausgeführt werden kann, müssen Sie zwischen VBScript und JavaScript wechseln, was zu Schwierigkeiten beim Schreiben des Programms und Verwirrung für das Wartungspersonal führt.
Verwenden Sie JavaScript direkt, um das Array zu übergeben und auf irgendeine Weise zu integrieren. Es ist nicht erforderlich, die Struktur über die SAFEARRAY-Methode zu integrieren. Da jedes Objekt (Element) in JavaScript über eigene Typinformationen verfügt, sind Arrays in JavaScript gleichzeitig die beste Alternative (Übertragungsmethode) zu Strukturen in C.