我想,本地和内置对象的定义才能回答这个问题。 下面是ECMAScript的规范,这些定义为:
4.3.6原生对象
在一个ECMAScript实现对象,独立于主机环境的,即存在于ECMAScript程序的执行的开始。
注:标准原生内置对象在这个规范中定义。 一些原生对象是内置的 ; 其他人可能ECMAScript程序的执行过程中被构造
4.3.7内置对象
由ECMAScript实现提供的对象,独立于主机环境的,即存在于ECMAScript程序的执行的开始
注:标准的内置对象在这个规范中定义和ECMAScript实现可以指定和定义等。 每一个内置的对象是本地对象。 内置的构造函数是一个内置的对象,也是一个构造函数。
我很期待这一次的解释。
以下是ES5显示 :
4.3.6原生对象#Ⓣ对象在ECMAScript实现其语义这个规范,而不是由主机环境完全定义。
注:标准原生对象在这个规范中定义。 一些原生对象是内置的; 其他人可能ECMAScript程序的执行过程中来构建。
由ECMAScript实现供给4.3.7内置对象#Ⓣ对象,独立于主机环境的,即存在于ECMAScript程序的执行的开始。
注:标准的内置对象在这个规范中定义和ECMAScript实现可以指定和定义等。 每一个内置的对象是本地对象。 内置的构造函数是一个内置的对象,也是一个构造函数。
正如你所看到的,这是不同的,你已经证明什么。
内置对象是由符合ECMAScript引擎提供原生的对象。 例如:
本机对象是,例如:
var obj = {};
或列表之前所示。 内置对象是天然的。
此外,您还没有表现出来,但是主机对象是依赖于环境中的物体。 例如,在浏览器中, 所述宿主对象是window
。 还有其他主机的对象,如document
或XMLHttpRequest
虽然。
原生对象 - 来实现并不在ECMAScript中本身。 Buiilt,在对象 - 这是由发动机提供的一个。 想想数学,字符串和等。