【发布时间】:2015-08-28 08:54:03
【问题描述】:
所以,我正在查看 ES5 规范中 new Object 和 Object 所做的定义。令我惊讶的是:
-
new Object描述了对象构造函数如何工作的整个算法——处理不同类型的值会发生什么。基本上在非对象上调用ToObject- 对象上的标识并建立在 null 和 undefined 上。 -
Object对 null 和 undefined 有一个特殊的第一步,它在其中构建一个对象,然后在原语上调用ToObject在对象上调用身份。
在阅读了几次描述之后 - 它们似乎一模一样。然而,从规范中可以明显看出他们做了一些不同的事情。例如在Array - 调用new Array 被指定为 the function call Array(…) is equivalent to the object creation expression new Array(…) with the same arguments.`
那么 - new Object 和 Object 有什么区别?为什么它们的指定不同?
为方便起见 - 这是link to the spec。
【问题讨论】:
-
JS 房间的人(即 Jan Drovak)猜测它与宿主对象有关,但我无法找出真正产生影响的一个。
-
new Object是在宿主对象上实现定义的。我仍然希望看到它不是身份的示例。 -
这会是那些著名的问题之一吗?
-
When Object is called as part of a new expression, it is a constructor that may create an object.涉及If the value is a host object, then actions are taken and a result is returned in an implementation-dependent manner that may depend on the host object.,这取决于实现。ToObject-Object: The result is the input argument (no conversion).这似乎是主要区别。为什么?可能允许implementation dependant部分 -
为什么不在esdiscuss.org上提问?
标签: javascript language-lawyer ecmascript-5