创建了一个新对象将这个对象的原型指向构造函数的显示原型prototype构造函数的this指向这个对象,并执行构造函数中的代码返回新对象(判断构造函数返回值类型:如果返回值是对象则返回该对象,如果不是则返回这个新对象) function Foo(){ var obj = {} obj.__proto__ = Foo.prototype let res = Foo.call(obj) return typeof res === 'object' ? res : obj}