```javascript
function mockNew() {
// 取出类
let Constructor = [].shift.call(arguments);
// 创建空对象
let obj = {};
// 设置新对象的__proto__属性指向构造函数的prototype对象
obj.__proto__ = Constructor.prototype;
// 使用新对象调用函数,函数中的this被指向新实例对象
let r = Constructor.apply(obj, arguments);
// 返回this指针. 当存在显示的返回时, 返回return后面的内容.新建的空对象作废.
return obj instanceof Object ? r : obj;
}
```
JavaScript new的实现原理