You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何通过prompt输入为Person类动态创建多个实例

解答

完全可以通过循环实现该需求,更推荐用数组统一存储生成的实例,比单独声明person3、person4这类零散变量的维护成本更低。

先修正原代码的拼写小问题

原代码里存在两处拼写笔误,可优先修正避免后续调用出错:

  • 构造函数里的属性名firsName应为firstName
  • 入参brithdate应为birthdate,存储出生日期的属性名dov也可以改成通用的dob(Date of Birth)提升可读性,当然也可以保留你原来的命名习惯。

推荐实现方案(数组存储)

class Person {
    constructor(fname, lname, birthdate) {
        this.firstName = fname;
        this.lastName = lname;
        this.dob = birthdate;
    }
}

// 将已有实例统一存入数组
const personList = [
    new Person("Alifa", "Elham", "12-07-2000"),
    new Person("Mazdul", "Prodhan", "07-03-2000")
];

function addNewPerson() {
    let ffname = prompt("enter your firstname");
    let llname = prompt("enter your lastname");
    let ddob = prompt("enter your date of birth");
    return new Person(ffname, llname, ddob);
}

// 按需设定要新增的实例数量,比如要生成3个新实例到person5就填3
const newPersonCount = 3;
for (let i = 0; i < newPersonCount; i++) {
    const newP = addNewPerson();
    personList.push(newP);
    // 如果确实需要person3/person4这类全局变量,可加下面这行(不推荐日常使用,会污染全局作用域)
    window[`person${personList.length}`] = newP;
}

// 调用示例:数组下标从0开始,person1对应personList[0],person3对应personList[2]
console.log(personList);
// 如果开了全局挂载,直接调用person3也可以取到对应实例
// console.log(person3);

方案说明

  • 用数组存储的优势:后续批量操作(比如批量打印所有人信息、统计年龄)直接遍历数组即可,不需要逐个写变量名,新增删除也不需要提前声明变量。
  • 全局挂载变量的方式仅适合学习测试使用,实际项目中不要这么写,避免全局作用域污染。

内容的提问来源于stack exchange,提问作者Mazdul Prodhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:45:03