عندما يستدعي JavaScript COM لتمرير صفيف، تتلقى واجهة COM كائنًا من النوع VARIANT، مثل الصفيف. نوع vt لهذا الكائن هو VT_DISPATCH، لذا تمثل قيمته مؤشر نوع IDispatch.
يشير المؤشر من النوع IDispatch إلى أن كائن المصفوفة هو في الواقع كائن مصفوفة مضمنة في JavaScript. ومن ناحية JavaScript، يمكننا الحصول على حجم المصفوفة من خلال سمة الطول. ثم هنا، يمكننا الحصول على المصفوفة من خلال GetIDsOfNames الدالة وطول دالة الاستدعاء، بحيث يمكن أن تكون محتويات المصفوفة متغيرة ديناميكيًا.
وفيما يلي المحتوى المقتبس: // احصل على طول المصفوفة } |
في هذا الوقت، يحصل nLength على طول المصفوفة.
المصفوفة في JavaScript عبارة عن كائن، ومحتويات المصفوفة هي سمات الكائن، والتي يتم إنشاؤها ديناميكيًا. تشبه طريقة الاستعلام عن هذه السمات إلى حد ما طريقة الاستعلام عن الطول، وهي أيضًا وظائف GetIDsOfNames. يتمثل الاختلاف الرئيسي في اختلاف الأسماء. يتم إنشاء اسم سمة كائن العنصر في المصفوفة ديناميكيًا، أي أنه يمكن الحصول عليها من خلال الاشتراك يلي:
وفيما يلي المحتوى المقتبس: من أجل ( int i = 0 ؛ i < nLength؛ ++ i) |
لذلك، من خلال استدعاء هاتين الطريقتين الخاصتين بالسمات، يمكن تسهيل كافة كائنات مصفوفة JavaScript في واجهة COM.
ما هي فوائد ذلك؟ عند النظر إلى العديد من الموارد عبر الإنترنت، وجدت أن معظمها يستخدم SAFEARRAY لمعالجة البنية وتمريرها إلى واجهة COM، ومع ذلك، فإن SAFEARRAY غير مدعوم في MIDL، وكائن JavaScript نفسه ليس كذلك بالنسبة لهذا المحتوى، للعمل في وضع SAFEARRAY، تحتاج إلى التبديل بين VBScript وJavaScript، الأمر الذي سيؤدي إلى صعوبة في كتابة البرنامج والارتباك لموظفي الصيانة.
استخدم JavaScript مباشرة لتمرير المصفوفة ودمجها بأي شكل من الأشكال. ليست هناك حاجة لدمج البنية من خلال طريقة SAFEARRAY. في الوقت نفسه، نظرًا لأن كل كائن (عنصر) في JavaScript له معلومات نوعه الخاصة، فإن المصفوفات في JavaScript هي أفضل بديل (طريقة النقل) للهياكل في C.