function myNew(constructor, ...args) { // 创建一个空对象,该对象的原型为构造函数的原型对象 var obj = Object.create(constructor.prototype); // 将构造函数的 this 绑定到该空对象上,执行构造函数的代码 var result = constructor.apply(obj, args); // 如果构造函数有显式返回一个对象,则返回该对象,否则返回空对象 return (typeof result === 'object' && result !== null) ? result : obj;}