Object()和new Object()生成的实例对象有区别吗?
通过Object()好像也能生成一个实例化的对象,和new没什么两样。请问和使用new关键字比起来有什么区别呢?单纯是new更符合规范,其他的都一致吗?还是说Object()内部就已经new过了再返回的。
回复
1个回答
test
2024-07-07
按照 ecma262 的描述,他们的效果是一样的,都会走向下面的 2 。
至于为什么没有走 1 ,原因就不一样了。Object()
的 NewTarget 是 undefined (NewTarget 只有在 new 的时候存在,是被 new 的对象),而 new Object()
的 NewTarget 是 Object,它是 activa funciton (当前正在运行的函数)。
When the Object function is called with optional argument value, the following steps are taken:
- If NewTarget is neither undefined nor the active function, thena. Return ? OrdinaryCreateFromConstructor(NewTarget, "%Object.prototype%").
- If value is undefined or null, return OrdinaryObjectCreate(%Object.prototype%).
- Return ! ToObject(value).
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容