new 发生了什么
- 创建一个空的对象
- 链接该对象(设置该对象的constructor)到另一个对象
- 将步骤1新创建的对象作为this的上下文 ;
- 如果该函数没有返回对象,则返回this。
实现
1 | function createNew(){ |
我在 MDN 文档上的是 Returns this if the function doesn’t return an object.
于是我试图以下的操作
1 | // 返回 Function |
发现tom、apple 分别返回了 sayHi、 [“apple”],因此第四步的对象指的是 Javascript 中除了数字、布尔值、字符串、null 和 undefined 这些类型之外的对象。即 Object、Function、Array 这三种。
所以要注意 typeof null 的结果是 “object”