在 ECMAScript 5 中,“采取行动”是什么意思?

What does it mean by "actions are taken" in ECMAScript 5?

本文关键字:采取行动 是什么 意思 ECMAScript      更新时间:2023-09-26

这是摘录。

15.2.2.1 新对象 ( [ 值 ] ) # (T)
当调用 Object 构造函数时,不带参数或只有一个参数值,以下采取的步骤:

如果提供了值,则如果类型(值)是对象,则

如果值是一个原生的 ECMAScript 对象,不要创建一个新对象,而只是简单地返回值。

如果值是主机对象,则执行操作并且以依赖于实现的方式返回结果可能取决于主机对象。

我只是想知道传入本机对象和将主机对象传递给对象构造函数有什么区别。换句话说,如果我调用新的对象(文档),幕后会发生什么?通过检查返回值,我看不到任何区别。

提前谢谢。

对于本机对象:javascript不必创建新对象,只需返回值。

但是对于主机对象:javascript首先创建一个新对象,然后只返回值。

这就是规范所说的。希望你能理解!

摘录

的意思是,如果value是一个主机对象,如Document,那么由实现来决定new Object(value)将做什么("以可能依赖于实现的方式采取操作[...]"value)以及它将返回什么值("结果以可能依赖于的实现方式返回"value)。

即使value是主机对象,大多数情况下new Object(value)也不会执行任何操作并返回value(就像它是本机对象一样)。在Document的特定情况下,我强烈期望这种行为。但是 ECMAScript 标准并不要求这样做。(定义Document类型的 DOM 规范似乎也不需要它。