以下是摘录。
15.2.2.1 new Object([value])#Ⓣ
当调用Object构造函数时没有参数或具有一个参数值,以下内容 采取的步骤:如果提供了值,那么如果Type(value)是Object,那么
如果值 是一个原生的ECMAScript对象,不要简单地创建一个新对象 回报价值。
如果值是主机对象,则执行操作 并以与实现相关的方式返回结果 可能取决于主机对象。
我只是想知道传递本机对象和将主机对象传递给Object构造函数之间有什么不同。换句话说,如果我调用新的Object(文档),那么幕后会发生什么?通过检查返回值,我看不出任何差异。
提前致谢。
答案 0 :(得分:1)
对于本机对象:javascript 不创建新对象,只返回值。
但是对于主机对象:javascript首先创建一个新对象,然后只返回值。
这是规范所说的。希望你明白!
答案 1 :(得分:0)
摘录说的是,如果value
是一个主机对象,例如Document
,那么由实现来决定new Object(value)
将做什么(“采取的行动[...]以依赖于实现的方式,可能依赖于“value
”以及它将返回什么值(“结果以依赖于实现的方式返回,可能取决于”value
)。
即使value
是主机对象,大多数情况下new Object(value)
也不会做任何事情并返回value
(就像它是本机对象一样)。在Document
的特定情况下,我强烈期望这种行为。但ECMAScript标准并不要求这样做。 (而且定义Document
类型的DOM规范似乎也不需要它。)