在使用 new 关键字的时候进行了以下操作:

  • 创建一个新的空对象 {}

  • 将该对象的 __proto__ 指向构造函数的原型(继承原型)

  • 将该对象作为函数内 this 上下文

  • 如果函数没有返回对象,返回 this

如果函数返回了对象且期望继承原型,则需要手动继承(将对象的 __proto__ 指向 Foo.prototype