在前面的系列文章中,我们知道了如何实现javascript和COM对象之间的互操作。在这里,我们再来看一个特殊的应用--索引属性。索引属性,就是让COM对象可以象一个数组一样的访问。比如,我们有一个COM对象实例oMyArray,在javascript中可以这样调用:
缺省属性很好实现,就是让COM对象提供一个DISPID=0的属性方法即可。
索引属性,就需要重载 IDispatch接口的GetIDsOfNames和Invoke方法。
我们先看看javascript是如何执行索引属性的。
javascript遇到oMyArray[0]时,调用IDispatch.GetIDsOfNames方法,查看是否存在名称为“0”的属性。如果存在,就用返回的DISPID继续调用IDispatch.Invoke方法。
为了方便起见,在下面的示例中,只支持long型的索引参数。