微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

new ActiveXObject和WScript.CreateObject有什么区别? 有用链接

如何解决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 举报,一经查实,本站将立刻删除。