本机对象是由ECMAScript规范定义的对象或对象类。数组、函数、日期和正则表达式(例如)是本机对象。 宿主对象是由宿主环境(如web浏览器)定义的对象,其中嵌入了JavaScript解释器。..。宿主对象也可能是本机对象,就像宿主环境定义普通JavaScript函数对象的方法一样。
JavaScript:权威指南,大卫弗拉纳根(O‘’Reilly)。版权所有,大卫弗拉纳根,978-0-596-80552-4。
主机对象(由主机环境定义)如何成为本机对象(需要由规范来定义)?你能给出上述方法的一个例子吗?
发布于 2015-12-07 21:20:30
ES5有以下定义:
4.3.6本机对象: ECMAScript实现中的对象,其语义完全由本规范而不是由宿主环境定义。 注本规范中定义了标准本机对象。一些本机对象是内置的,另一些则可能是在执行ECMAScript程序的过程中构建的。 4.3.7内置对象:由ECMAScript实现提供的对象,它独立于宿主环境,在执行ECMAScript程序时存在。 注本规范中定义了标准内置对象,ECMAScript实现可以指定和定义其他对象。每个内置对象都是本机对象。内置构造函数是一个内置对象,也是一个构造函数. 4.3.8主机对象:由主机环境提供的对象,用于完成ECMAScript的执行环境。 注意,任何非本机对象都是宿主对象。
这最后的评论似乎模棱两可,但我读到的意图是,本机对象不是宿主对象(我可能错了)。
ES2015的命名变化。此处没有使用“本机对象”一词。“本机”一词仅发生在NativeError的上下文中。然而,使用了“内置对象”和“对象和设施的宿主环境”这两个术语。
https://stackoverflow.com/questions/34143365
复制相似问题