Javascript JScript-ActiveXObject的VBScript TypeName函数

Javascript JScript-ActiveXObject的VBScript TypeName函数,javascript,vbscript,Javascript,Vbscript,有没有办法确定JScript中变量的ActiveXObject类型?VBScript具有TypeName功能,但我在JScript中找不到合适的对应项。我熟悉typeof和instanceof操作符,但没有一个返回特定于对象的数据 我询问这件事的原因是为了一个工作项目。如果可能,我需要避免使用VBScript。以下是一些我不能偏离的项目要求: JScript代码将是HTA的一部分 HTA将由Internet Explorer 8托管 所有计算机都将运行Windows 7(32位) 我能用JS

有没有办法确定JScript中变量的
ActiveXObject
类型?VBScript具有
TypeName
功能,但我在JScript中找不到合适的对应项。我熟悉
typeof
instanceof
操作符,但没有一个返回特定于对象的数据

我询问这件事的原因是为了一个工作项目。如果可能,我需要避免使用VBScript。以下是一些我不能偏离的项目要求:

  • JScript代码将是HTA的一部分
  • HTA将由Internet Explorer 8托管
  • 所有计算机都将运行Windows 7(32位)
我能用JScript得到的最接近的值是真/假值:

var Regex=newActiveXObject('VBScript.RegExp');
ActiveXObject的正则表达式实例;//返回true
但是,使用VBScript时,
TypeName
函数返回对象接口名称:

Dim正则表达式
设置Regex=CreateObject(“VBScript.RegExp”)
TypeName(Regex)'返回IRegExp2
以下是我为测试之前的结果而制作的完整HTA:

JSTesting.hta

JScript测试
新函数(){
变量宽度=350,高度=120;
var left=(screen.availWidth-width)/2;
var top=(screen.availHeight-高度)/2;
resizeTo(宽度、高度);moveTo(左侧、顶部);
}
window.onload=函数(){
var regex=新的ActiveXObject('VBScript.RegExp');
jstest.onclick=vbstest.onclick=function(){
var id=event.srcelelement.id;
var TypeName=(id=='jstest')?JSTypeTest:VBSProc;
output.innerText=类型名称(regex);
};
};
功能类型测试(obj){
返回(ActiveXObject的obj实例)?
'ActiveXObject':'UnknownObject';
}
Dim VBSProc
设置VBSProc=GetRef(“VBSTypeTest”)
函数VBSTypeTest(obj)
VBSTypeTest=类型名称(obj)
端函数
跨度{
边缘顶部:10px;
字体:10pt信使新;
}
方法
VBScript

VBScript.RegExp对象=
我不知道它会为目标环境中的ActiveX对象提供什么,但是
Object.prototype.call(对象)
对于JavaScript对象定义为
“[Object TypeName]”
。值得一试。更多:T.J.,我尝试了你的建议,但它给了我一个错误“对象不支持此属性或方法”。我还尝试了另一个版本
Object.prototype.toString.call(RegexObj)
,它返回了
“[Object Object]”
@Chris:对不起,这是一个打字错误。我的意思是
Object.prototype.toString.call(theObject)
(希望链接能清楚地说明这一点)。不过听起来好像没用。这是在黑暗中拍摄的。@T.J.,我为忽略链接而道歉。乍一看,这似乎是你名字的一部分。史诗阅读失败:(@Chris:哦,嘿,我明白你的意思了!