function myNew(constructor, ...args) {// 参数验证if (typeof constructor !== 'function') {throw new TypeError('myNew: First argument must be a function');}// 1. 创建新对象,继承构造函数的原型const instance = Object.create(constructor.prototype);// 2. 执行构造函数const result = constructor.apply(instance, args);// 3. 处理返回值// 如果构造函数返回对象或函数,则返回该值;否则返回新创建的对象if (result !== null && (typeof result === 'object' || typeof result === 'function')) {return result;}return instance; }function User(name,age){this.name=name;this.age=age }const user=myNew(User,'aaa',33) console.log(user.name,user.age)