使用向量的Vector object或使用默认属性直接访问WIA Item property的成员时,JScript会将其视为数字:
var v = new ActiveXObject('WIA.Vector');
v.SetFromString('This is a test', true, false);
for (var i = 1; i<= v.Count; i+=1) {
WScript.Echo(String.fromCharCode(v(i)));
}
但是,如果我使用Enumerator来遍历 Vector :
var enumerator = new Enumerator(v);
enumerator.moveFirst();
while (!enumerator.atEnd()) {
WScript.Echo(String.fromCharCode(enumerator.item()));
enumerator.moveNext();
}
我在WScript / CScript下遇到以下错误:
enumerator.item()不是数字
typeof
返回unknown
:
WScript.Echo(typeof enumerator.item());
大概是某种类型的自动化类型(如this question中所示)只显示为数字,这就是typeof
返回unknown
的原因。
如何将此值强制转换为“真正的”Javascript号码?
更新
VBA中的以下代码:
Dim v As New Vector, item As Variant
v.SetFromString "This is a test", True, False
For Each item In v
Debug.Print TypeName(item)
Next
打印
字节
字节
...
因此问题可以缩小到 Byte 特定的自动化类型。
答案 0 :(得分:0)
它适用于IE11的控制台。 (你在while循环中有错误)
代码:
- Vector -
84 T number
104 h number
105 i number
115 s number
32 number
105 i number
115 s number
32 number
97 a number
32 number
116 t number
101 e number
115 s number
116 t number
0 number
- Enumerator -
84 T number
104 h number
105 i number
115 s number
32 number
105 i number
115 s number
32 number
97 a number
32 number
116 t number
101 e number
115 s number
116 t number
0 number
将打印到控制台:
{{1}}