编辑代码

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
function createFactory(constructor,...args){
    const obj = {}
    Object.setPrototypeOf(obj,constructor.prototype)
    const result = constructor.call(obj,...args)
    return result instanceof Object ? result : obj
}

// 定义一个构造函数
function Person(name, age) {
  this.name = name;
  this.age = age;
}

// 使用 createFactory 创建 Person 对象的实例
const person1 = createFactory(Person, 'Alice', 25);
console.log(person1); // { name: 'Alice', age: 25 }
console.log(person1 instanceof Person); // true

// 创建另一个 Person 对象的实例
const person2 = createFactory(Person, 'Bob', 30);
console.log(person2); // { name: 'Bob', age: 30 }
console.log(person2 instanceof Person); // true

// 定义一个带有返回值的构造函数
function Square(sideLength) {
  const area = sideLength ** 2;
  return { sideLength, area };
}

// 使用 createFactory 创建 Square 对象的实例
const square = createFactory(Square, 5);
console.log(square); // { sideLength: 5, area: 25 }
console.log(square instanceof Square); // false