Как преобразовать Scripting.Dictionary в объект JavaScript?

Есть ли способ преобразовать ActiveX (Scripting.Dictionary) в объект JavaScript?

Мне нужно предоставить коду JavaScript некоторые константы, определенные в ActiveX. Прямо сейчас я возвращаю Scripting.Dictionary, поэтому JavaScript может получить к ним доступ следующим образом:

myObj.SomeEnum («НЕКОТОРЫЕ_КОНСТ»);

где SomeEnum определен в IDL как свойство, возвращающее VARIANT (которое во время выполнения оборачивает указатель IDispatch на объект словаря).

Однако в идеале я хотел бы иметь доступ к тому же самому:

myObj.SomeEnum.SOME_CONST.

Есть какой-либо способ сделать это? Я не хочу определять конкретный COM-интерфейс для каждого такого перечисления / свойства.


person rincewind    schedule 10.03.2011    source источник
comment
Свойство SomeEnum относится к типу Scripting.Dictionary?   -  person Mark At Ramp51    schedule 10.03.2011
comment
Что ж, я могу сделать его любым типом, который мне нравится, приведенный выше код (SomeEnum (SOME_CONST)) работает, если я возвращаю указатель интерфейса, завернутый в VARIANT.   -  person rincewind    schedule 10.03.2011


Ответы (1)


Попробуй это:

var javascript_array = new VBArray(dictionary.Items()).toArray();
person Eugene    schedule 10.03.2011
comment
Хм, JavaScript выдает ошибку: ожидается VBArray. Я знаю, что это работает для SAFERRAY, но что я должен передать в случае словаря? Указатель IDispatch, а также VARIANT (обертывающий указатель IDispatch) не работают. - person rincewind; 10.03.2011
comment
Но это удаляет ключи из моего словаря: элементы теперь индексируются по порядковым номерам, а не по их исходным ключам. Но я думаю, что могу вызвать один и тот же код с помощью Keys (), а также Items (), а затем объединить то, что я получаю в JavaScript. Спасибо! - person rincewind; 10.03.2011