如何解决new ActiveXObject和WScript.CreateObject有什么区别? 有用链接
根据Microsoft documentation,可以同时使用ActiveXObject()
和WScript.CreateObject()
函数创建COM对象的实例。好像是线条
var objXL = new ActiveXObject("Excel.Application");
和
var objXL = WScript.CreateObject("Excel.Application");
相同。这是一个真实的假设吗?如果不是,那有什么区别?展示差异的示例将受到高度赞赏。
P.S。。该帖子被标记为重复,与VBScript的CreateObject()
方法和JScript的WScript.CreateObject()
之间的区别有关。它回答提到了JScript的ActiveXObject()
构造函数,没有进一步说明。
解决方法
它们相同吗?
简而言之,答案是肯定的,它们是相同的(从某种意义上说,它们执行实例化自动化对象的相同工作)。
与具有全局功能CreateObject()
的VBScript基本上不同,在基于ECMAScript 3rd Edition的JScript中没有这样的等效项。因此,Microsoft添加了自己的扩展名ActiveXObject
,其扩展名与CreateObject
相同。
两种语言都可以托管在Windows脚本宿主中,这使它们可以访问WScript.CreateObject()
,这是另一种功能完全相同的方法,但仅在WScript
对象的上下文中可用通过Windows脚本宿主。
跟进
关于它们是否相同,存在一些争论,我仍然坚持我最初的回答,即它们是相同的。但是,我要承认,我是在比较VBScript CreateObject()
和JScript new ActiveXObject()
而不是Wscript.CreateObject()
(两者稍有不同)。
不过,我们必须清楚,所有这些功能和对象都具有相同的目的,即实例化自动化对象(COM)。要对此进行备份,是每一个的官方描述;
WScript-CreateObject()
Method
创建一个COM对象
JScript-ActiveXObject
Method
启用并返回对自动化对象的引用
VBScript-CreateObject()
Function
创建并返回对自动化对象的引用
如果它们完全相同,它们的意义是什么?我们已经有特定于语言的自动化实例化方法,那么Wscript.CreateObject()
的意义是什么?
区别在于,当使用第二个参数调用它时,它允许您指定一个前缀,该前缀将用于区分该COM对象的事件处理程序。
这里是example taken from this answer,它显示了第二个参数如何用于设置前缀objIE_
,然后该前缀将用于为与该COM对象关联的任何事件处理程序添加前缀。 InternetExplorer.Application
个对象。
// JScript
var objIE = WScript.CreateObject("InternetExplorer.Application","objIE_")
objIE.Visible = true
while (objIE.Visible){
WScript.Sleep(500);
}
function objIE_NavigateComplete2(pDisp,URL){
WScript.Echo("You just navigated to",URL)
}
function objIE_OnQuit(){
boolBrowserRunning = false ;
}
它允许打开Internet Explorer实例并通过绑定事件导航到URL,一旦Internet Explorer窗口关闭,脚本将结束。
因此,尽管它们并不相同,但它们执行的实例化自动化(COM)对象的功能相同。
有用链接
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。