【发布时间】:2021-03-20 07:13:53
【问题描述】:
在this question的cmets中,有人告诉我.getOwnPropertyDescriptor()方法
在 ES3 中不受支持 ...,所以它可能在 JScript 中不受支持 [或者]
这确实是我在cscript.exe/wscript.exe 中尝试调用该方法时看到的:
对象不支持该属性或方法
但是,我正在使用的最新 JScript 版本是 5.812,根据 this document,该方法应该在 5.8* JScript 中可用。在this post 中也注意到了差异,指向another post,其中提供了使用htmlfile COM 对象的解决方法来访问Windows Script Host (WSH) JScript 中缺少的属性/方法。
我想知道是否可以使用相同的方法来访问上面的方法是WSH JScript。
比如代码应该是这样的
var object1 = {
property1: 42
};
var htmlDoc = WScript.CreateObject('htmlfile');
// other code
var descriptor1 = <htmlfileObject>.getOwnPropertyDescriptor(object1, 'property1');
Wscript.StdOut.WriteLine(descriptor1.value);
提前感谢您的支持。
P.S.我在这里也标记了 VBScript,因为如果有人知道如何在 VBScript 中执行此操作,我们很可能可以轻松地将其转换为 JScript。
【问题讨论】:
-
我不确定我们如何才能更清楚,但您不能在 JScript 中使用高于 ECMAScript 版本 3 的功能。 JScript 的 Active Scripting 版本的最后一次更新是在 IE9 中,它使用 ECMAScript 版本 3。在那之后,有一个基于不同引擎 (Chakra) 的版本与它并排放置,它牺牲了对 jsRT API 的 Active Scripting 功能的支持.您使用的 JScript 版本 5.8 于 2009 年 3 月发布,IE8 基于 ECMAScript 版本 3 的实现,是 JavaScript 版本 1.5 的等效版本。抱歉,您尝试做的事情无法完成。
-
我了解您的argument here,但不支持。您在 IE 浏览器中实际使用的 JScript 版本取决于文档模式支持,请参见 Microsoft JScript ECMA-262-1999 ECMAScript Language Specification Standards Support Document 的第 8 页。
-
所以要访问 JScript 5.8(包括第 5 版支持的 ECMA 扩展),您必须在 IE8 文档模式下运行浏览器。如果您想在 Windows Scripting Host 中使用它,那么您就不走运了,因为这些扩展只针对浏览器实现,而不是 WSH。不幸的是,JScript / VBScript / WSH 都是仍然“按原样”工作的遗留技术,但是当涉及到更现代的方法并试图支持它们时,就需要转向更现代的技术了。
-
我很乐意承认我错了,在这种情况下我是Kul-tigin's answer proves。赞成。
标签: vbscript com jscript wsh ecmascript-3