根据ECMA-262,本机对象
对象在ECMAScript实现中,其语义完全由本规范而不是由宿主环境定义。
内建对象定义为
由独立于主机环境的ECMAScript实现提供的对象,该对象在执行ECMAScript程序的开始时存在。
带着音符
标准内置对象在本规范中定义,ECMAScript实现可以指定和定义其他对象。每个内置对象都是本机对象.
如果本机对象完全由ECMA-262规范而不是宿主环境定义,并且ECMAScript实现可以指定和定义新的内建对象,那么当这些新的内建对象不是由ECMA-262规范完全定义时,它们如何才能是本机对象?
我遗漏了什么?
发布于 2011-11-08 15:40:18
它们是“本地的”,因为它们附带了ECMAScript实现。通常由ECMAScript实现和其他几个协同工作的接口组成的应用程序中的宿主环境。例如,
“内置”对象需要从Object
或Function
继承,而宿主对象--由主机环境提供但在执行开始时不一定存在的对象--不需要但可能(有时也需要)。
ECMA-262定义的本机对象示例
Object()
,Array()
,Date()
Math
,JSON
,全局对象。未由ECMA-262定义的本机内建对象的示例
WeakMap()
或__proto__
ActiveXObject()
构造函数和(未记录在案的) CollectGarbage()
函数主机对象示例
document
和window
console
发布于 2011-11-08 15:29:10
本机对象的语义完全由ECMA-262定义。对象本身可能不是。
所以我们有三个层次的对象:
Object
.setTimeout
.NodeList
.发布于 2011-11-08 15:42:40
native object
的定义是host object
的相对项。
像window.console
一样,对象是一个主机对象,Ecma262还没有被记录下来来告诉浏览器如何实现它。
而Ecma262只是一个指定语言特性的项目。ECMAScript实现实际上是浏览器的业务。这意味着符合object type
规范的实现,我们可以说它是built-in object
,尽管它们的工作方式并不完全相同。
https://stackoverflow.com/questions/8052578
复制相似问题