- 创建一个空对象
- 让空对象的 proto (IE 没有该属性) 成员指向构造函数的 prototype 成员对象
- 使用 apply 调用构造函数,属性和方法被添加到 this 引用的对象中
- 如果构造函数中没有返回其他对象,那么返回 this,即创建的这个新对象;否则,返回构造函数返回的对象
```
/*
- fn就是构造器(类)
- 创建一个空对象,让空对象的proto指向构造器的prototype
- 调用构造器方法,属性和方法被添加到this上
- 如果构造器没有返回值,就返回this本身
- 如果有返回值,就返回result */ function _new = function(fn) { const obj = Object.create(fn.prototype); const result = fn.apply(obj); if (result && typeof result === “object” || typeof result === “function”) { return result; } return obj; };
```