JavaScript Windows 脚本宿主使用的版本

JavaScript version used by the Windows Scripting Host

几年来,我一直在 Windows 脚本中使用 JavaScript,包括 .JS 文件和 .WSF 文件,但我发现有些方法无法识别我将它们放在一个在网页外部执行的脚本中,该脚本在网页上的脚本中有效。我知道不同的浏览器支持不同的版本JavaScript,MSDN有一个页面描述了哪些Internet Explorer和Edge浏览器版本支持哪些功能和方法:

https://docs.microsoft.com/en-us/scripting/javascript/reference/javascript-version-information

但它没有说明 Windows 脚本支持哪些方法。

Windows 脚本支持的 JavaScript 版本是否取决于 Windows 的版本、计算机上安装的 Internet Explorer 版本,或其他一些因素或组合因素? JavaScript 程序中是否有一种方法可以在执行时检测正在使用哪个版本的 JavaScript?

它是一个基于 ECMAScript 标准的 common mistake to make but the Windows Scripting Host supports VBScript and Microsofts own JavaScript implementation called JScript。事实上,它可以通过对活动脚本语言的支持来支持许多脚本实现。

虽然它与JavaScript有很多相似之处,但它们并不相同(是的,它们来自同一个地方,但这并不意味着它们之后没有分歧) 。当您在互联网浏览器之外使用 .js 文件时 (唯一支持活动脚本的浏览器是 Internet Explorer 的早期版本,Edge 之前) 它们是使用主机程序执行的,在这种情况下Windows 脚本宿主。这也适用于使用 .wsf 文件。

编辑:我还更新了 tag info as it states 可以使用,这是不正确的,为什么围绕这个主题会出现如此多的混淆。


有用的链接

我大约 2 年前开始大量研究 Jscript。根据我的经验

  • 没有类
  • 没有进口
  • 没有兰巴斯
  • 没有“让”
  • 没有“常量”
  • 没意思

这是我 2012 年第一次开始编程时 JS 的状态。当时,上述所有功能都将成为 EcmaScript 6 中的下一件大事。

所以我有根据的猜测是 EcmaScript 5。

您仍然可以使用传统的 ES5 语法制作 类。

function FunctionButClass(a,b){
    this.Square = function(){ return a*b; }
}
var squared = new FunctionButClass(4,4).Square();

原型语法也适用。

function PrototypeSyntax(a,b){
    this.a = a;
    this.b = b;
}
PrototypeSyntax.prototype.Square = function(){
    return this.a*this.b;
}

另请注意 DOM 的整体不存在,因此没有 document.getElementById("") 一切都是 运行 通过 WScript.CreateObject("")

注意 2:DOM 可通过 .HTA 文件在 Jscript 中使用。但是记住

WScript.CrateObject("Scripting.FilesSystemObject");

现在变成:

new ActiveXObject("Scripting.FilesSystemObject")