有没有办法在JScript中确定变量的ActiveXObject
类型? VBScript具有TypeName
函数,但我无法在JScript中找到合适的对应函数。我熟悉typeof
和instanceof
运算符,但没有一个返回对象特定数据。
我在询问这个问题的原因是为了一个工作项目。如果可能,我需要避免使用VBScript。以下是一些我不能偏离的项目要求:
我能用JScript得到的最接近的值是真/假值:
var Regex = new ActiveXObject('VBScript.RegExp');
Regex instanceof ActiveXObject; // Returns true
但是,对于VBScript,TypeName
函数返回对象接口名称:
Dim Regex
Set Regex = CreateObject("VBScript.RegExp")
TypeName(Regex) ' Returns IRegExp2
这是我用来测试之前结果的完整HTA:
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>JScript Testing</TITLE>
<META http-equiv='X-UA-Compatible' content='IE=8' />
<SCRIPT language='JScript'>
new function () {
var width = 350, height = 120;
var left = (screen.availWidth - width) / 2;
var top = (screen.availHeight - height) / 2;
resizeTo(width, height); moveTo(left, top);
}
window.onload = function () {
var regex = new ActiveXObject('VBScript.RegExp');
jstest.onclick = vbstest.onclick = function () {
var id = event.srcElement.id;
var TypeName = (id === 'jstest') ? JSTypeTest : VBSProc;
output.innerText = TypeName(regex);
};
};
function JSTypeTest(obj) {
return (obj instanceof ActiveXObject) ?
'ActiveXObject' : 'UnknownObject';
}
</SCRIPT>
<SCRIPT language='VBScript'>
Dim VBSProc
Set VBSProc = GetRef("VBSTypeTest")
Function VBSTypeTest(obj)
VBSTypeTest = TypeName(obj)
End Function
</SCRIPT>
<STYLE type='text/css'>
span {
margin-top: 10px;
font: 10pt courier new;
}
</STYLE>
</HEAD>
<BODY>
<BUTTON id='jstest'>JScript</BUTTON>
<BUTTON id='vbstest'>VBScript</BUTTON>
<HR>
<SPAN>VBScript.RegExp object = </SPAN>
<SPAN id='output'></SPAN>
</BODY>
</HTML>