new 一个构造函数,执行的步骤:
1.新生成一个对象
2.将构造函数的作用域赋值给新对象(即绑定新对象的 this)
3.执行构造函数中的代码(即为这个新对象添加属性)
4.返回新对象
function myNew(func, ...args) {
let obj = {};
// 更改原型
obj.__proto__ = func.prototype;
const result = func.call(obj, ...args);
return result instanceof Object? result : obj;
}