我认为需要定义本机和内置对象才能回答这个问题。以下是ECMAScript规范将其定义为:
4.3.6原生对象
ECMAScript实现中的对象,独立于主机环境,存在于开头 执行ECMAScript程序。
注意标准的本机内置对象在此定义 规格。 内置了一些原生对象;其他人可能会 在执行ECMAScript程序的过程中构建
4.3.7内置对象
ECMAScript实现提供的对象,与主机环境无关 在执行ECMAScript程序开始时
注意标准内置对象在本规范中定义, ECMAScript实现可以指定和定义其他实现。一切 内置对象是一个本机对象。 内置构造函数是一个 内置对象也是一个构造函数。
我期待着解释这个。
答案 0 :(得分:4)
以下是ES5 shows:
4.3.6 原生对象#Ⓣ ECMAScript实现中的对象,其语义完全由此规范定义,而不是由主机环境定义。
注意本规范中定义了标准本机对象。一些本机对象是内置的;其他可能是在执行ECMAScript程序的过程中构建的。
4.3.7 内置对象#Ⓣ ECMAScript实现提供的对象,独立于主机环境,在ECMAScript程序执行开始时出现。
注意本规范中定义了标准内置对象,ECMAScript实现可以指定和定义其他对象。每个内置对象都是本机对象。内置构造函数是一个内置对象,也是一个构造函数。
正如您所看到的,与您所展示的内容不同。
内置对象是ECMAScript兼容引擎提供的本机对象。例如:
原生对象例如是:
var obj = {};
或之前显示的列表。内置对象是原生的。
此外,您没有显示它,但主机对象是依赖于环境的对象。例如,在浏览器中, 主机对象为window
。还有其他主机对象,例如document
或XMLHttpRequest
。
答案 1 :(得分:-2)
原生对象 - 表示不在ECMAScript本身中实现。内置对象 - 引擎提供的对象。想想数学,字符串等。