gpt4 book ai didi

javascript - 在网络浏览器中,窗口对象是原生 ECMAScript 对象吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:07:51 25 4
gpt4 key购买 nike

ECMAScript 规范定义了一个 "unique global object that is created before control enters any execution context" .此全局对象是 ECMAScript 的标准内置对象,因此是 native 对象。

规范还指出:

In addition to the properties defined in this specification the global object may have additional host defined properties. This may include a property whose value is the global object itself; for example, in the HTML document object model the window property of the global object is the global object itself.

因此,在网络浏览器中,window 对象只是 ECMAScript 全局对象的方便名称,因此,window 对象是原生 ECMAScript 对象。

我的理解正确吗?

最佳答案

这主要归结为“ native 对象”或“宿主对象”的真正含义的问题。 ECMAScript 规范为这些术语提供了相当抽象的定义,并且有足够的空间对这些定义进行不同的解释。比如在native object的定义中,“语义”这个词其实在说什么。它只是原始对象语义(在 ES 中由 [[propName]] 内部属性指定)还是包含对象的应用程序级语义。 DOM 窗口对象当然具有 ES 规范中未定义的可观察应用程序级语义,因此如果考虑这些语义,它就不可能是“ native 对象”。

如果您将其视为实现语用学问题,答案可能会简单得多。一个 ES 引擎实现者可能认为在 ES 堆中分配并由 ES 垃圾收集器管理的任何对象都是“原生 ES 对象”。 “宿主对象”通常被认为是存在于 ES 堆外部的东西,并且可以使用某种互操作层(例如 COM、XPCOM 或 V8 嵌入 API)访问。根据实现的不同,DOM 窗口对象可能属于任一类别。这种区别可能比任何规范级别的区别对引擎实现者和主机提供者都更相关。

下一版 ES 规范中可能会有进一步的定义说明。甚至还有一项建议取消“ native ”和“主机”对象术语:http://wiki.ecmascript.org/doku.php?id=strawman:terminology .然而,尚不清楚此类定义是否真的具有非常大的实际影响。

关于javascript - 在网络浏览器中,窗口对象是原生 ECMAScript 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10553188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com