2011-03-10 136 views
0

有什麼辦法將ActiveX(Scripting.Dictionary)轉換爲JavaScript對象?如何將Scripting.Dictionary轉換爲JavaScript對象?

我需要將一些在ActiveX中定義的常量暴露給JavaScript代碼。現在我要返回一個Scripting.Dictionary,所以JavaScript可以像這樣訪問它們:

myObj.SomeEnum(「SOME_CONST」);

其中SomeEnum在IDL中定義爲屬性,返回VARIANT(在運行時將IDispatch指針包裝爲字典對象)。

然而,理想情況下我希望能夠訪問像這樣相同的事情:

myObj.SomeEnum.SOME_CONST。

有沒有辦法做到這一點?我不想爲每個這樣的枚舉/屬性定義特定的COM接口。

+0

的SomeEnum屬性的類型中的Scripting.Dictionary? – 2011-03-10 02:17:45

+0

嗯,我可以讓它成爲我喜歡的任何類型,如果我返回包裝到VARIANT中的接口指針,上面的代碼(SomeEnum(「SOME_CONST」))可以工作。 – rincewind 2011-03-10 06:45:28

回答

0

試試這個:

var javascript_array = new VBArray(dictionary.Items()).toArray(); 
+0

嗯,JavaScript給出的錯誤:VBArray的預期。我知道它適用於SAFERRAY,但在字典的情況下我應該通過什麼? IDispatch指針,以及VARIANT(包裝IDispatch指針)不起作用。 – rincewind 2011-03-10 06:41:50

+0

我用.Items()方法更新了示例。對不起,我第一次錯過了...... – Eugene 2011-03-10 07:16:48

+0

但是,從我的字典中剝離鍵:項目現在得到序號索引,而不是他們原來的鍵。但我想我可以用Keys()和Items()來調用相同的代碼,然後結合我在JavaScript中獲得的內容。謝謝! – rincewind 2011-03-10 17:54:31