通过Object()好像也能生成一个实例化的对象,和new没什么两样。请问和使用new关键字比起来有什么区别呢?单纯是new更符合规范,其他的都一致吗?
还是说Object()内部就已经new过了再返回的。
通过Object()好像也能生成一个实例化的对象,和new没什么两样。请问和使用new关键字比起来有什么区别呢?单纯是new更符合规范,其他的都一致吗?
还是说Object()内部就已经new过了再返回的。
即使不用 new,构造函数也会自动执行,如果不是其本身,则会自动调用返回其本身。
为什么会有这种模式呢?因为 Object 是 javascript 内置的对象,javascript 语言规范的制定者担心有的新手忘写 new,所以就给加了个这个模式,还有 Array,Regex 等,使用对构造函数时建议使用 new 去表示其意义。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
按照 ecma262 的描述,他们的效果是一样的,都会走向下面的 2 。
至于为什么没有走 1 ,原因就不一样了。
Object()
的 NewTarget 是 undefined (NewTarget 只有在 new 的时候存在,是被 new 的对象),而new Object()
的 NewTarget 是 Object,它是 activa funciton (当前正在运行的函数)。20.1.1.1
Object ( [ value ] )