【问题标题】:JavaScript: What is an example for a host object that is also a native object?JavaScript:主机对象也是本机对象的示例是什么?
【发布时间】:2016-03-12 15:12:49
【问题描述】:

原生对象是由 ECMAScript 规范定义的对象或对象类。数组、函数、日期和正则表达式(例如)是原生对象。

主机对象是由嵌入了 JavaScript 解释器的主机环境(例如 Web 浏览器)定义的对象。 [...] 宿主对象也可以是本地对象,就像宿主环境定义的方法是普通的 JavaScript 函数对象一样。

[JavaScript:权威指南,David Flanagan (O'Reilly)。版权所有 2011 David Flanagan,978-0-596-80552-4。]

宿主对象(由宿主环境定义)如何成为本地对象(需要由规范定义)?你能举出上述方法的例子吗?

【问题讨论】:

  • 根据 ES5 规范,“任何非原生对象都是宿主对象。”更多信息在这里:stackoverflow.com/questions/7614317/…
  • @Jordan 我认为 OP 正在询问也是本机对象的主机对象。

标签: javascript


【解决方案1】:

ES5 有以下定义:

4.3.6 原生对象:ECMAScript 实现中的对象,其语义完全由本规范定义,而不是由 宿主环境。

注意标准本机对象在本规范中定义。一些 原生对象是内置的;其他的可以在施工期间建造 ECMAScript 程序的执行过程。

4.3.7 内置对象:由 ECMAScript 实现提供的对象,独立于宿主环境,存在 在 ECMAScript 程序开始执行时。

注意标准内置对象在本规范中定义,并且 ECMAScript 实现可以指定和定义其他实现。每一个 内置对象是本机对象。内置构造函数是 也是构造函数的内置对象。

4.3.8 宿主对象:宿主环境提供的完成ECMAScript执行环境的对象。

注意任何非本地对象都是宿主对象。

这个最后的评论似乎模棱两可,但我读到本机对象不是宿主对象的意图(我可能错了)。

ES2015 中的命名法发生了变化。那里没有使用术语“本地对象”。 “本地”一词仅出现在 NativeError 的上下文中。但是使用了术语“内置对象”和“对象和设施的宿主环境”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多