vc++访问javascript(3)--遍历javascript中的数组
来源:互联网 发布:集美大学网络服务中心 编辑:程序博客网 时间:2024/06/05 09:02
我们经常会遇到,将脚本中定义的多个参数打包到一个数组中,然后将这个数组传给一个组件方法。javascript和vbscript定义数组的方式是不同的。vbscript中的数组采用的是自动化兼容类型SAFEARRAY,使用VC++中的CComSafeArray类可以很方便的进行遍历。下面我们重点看看javascript中的数组如何进行遍历。
一、javascript脚本中数组的定义
javascript中的数组更像是一个Object对象。在javascript中,可以按数值索引给一个数组元素赋值,也可以通过名称索引给数组元素赋值,如下:
var oParams=new Object();
oParams["LoginName"]="test";
oParams["Password"]="123";
oParams["VerifyCode"]="12PQ";
这样赋值的好处是,每一个元素都可以标识一个明确的意义。
二、上一篇我们说过Object向外暴露IDispatchEx接口,我们就可以通过GetNextDispID、GetMemberName和InvokeEx三个方法实现对数组的遍历。
- VARIANT varParams; //这是脚本传入的参数数组
- //如果传入的类型不是VT_DISPATCH就退回出错信息
- if(varParams.vt!=VT_DISPATCH)
- return E_INVALIDARG;
- //取得IDispatchEx接口
- CComPtr<IDispatchEx> pDispEx;
- HRESULT hr=varParams.pdispVal->QueryInterface(IID_IDispatchEx,(void**)&pDispEx);
- if(FAILED(hr))
- return E_INVALIDARG;
- //枚举所有的属性
- DISPID dispid;
- //取得第一个元素的DISPID
- hr = pDispEx->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
- while (hr == NOERROR)
- {
- //元素名称
- CComBSTR bstrName;
- hr = pDispEx->GetMemberName(dispid, &bstrName);
- if (FAILED(hr))
- return E_FAIL;
- //元素值
- CComVariant vValue;
- DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
- hr = pDispEx->InvokeEx(dispid, LOCALE_USER_DEFAULT,
- DISPATCH_PROPERTYGET, &dispparamsNoArgs,
- &vValue, NULL, NULL);
- if(FAILED(hr))
- return E_FAIL;
- //取得下一个元素的DISPID
- hr = pDispEx->GetNextDispID(fdexEnumAll, dispid, &dispid);
- }
- vc++访问javascript(3)--遍历javascript中的数组
- javascript中的数组的遍历
- javascript - javascript中的数组
- 【JavaScript】遍历数组
- JavaScript数组遍历
- JavaScript数组遍历
- javascript二维数组遍历
- 遍历 JavaScript 数组
- JavaScript遍历多维数组
- javascript原型遍历数组
- javascript对数组的申明、访问、转换、遍历、排序
- javascript中的each遍历
- javascript中的each遍历
- JavaScript中的遍历详解
- javascript中的each遍历
- JavaScript 中的遍历
- JavaScript中的遍历
- vc++访问javascript(1)--window在脚本引擎中的作用
- subversion服务器两种配置方式所用的配置文件及格式
- 2008-8-3
- 2008-8-4
- 详解Javascript匿名函数的使用
- 微内核新思想
- vc++访问javascript(3)--遍历javascript中的数组
- 客户端凭证缓存
- IT之禅(二十)
- (sandbar.dll)C#自定义工具条
- 加油,努力啊
- C#绘图(可以处理负值) 选择自 zizhuxingguang 的 Blog
- VC的若干实用小技巧 (如何干净的删除一个类)
- 查找免费文献
- 结束今天