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
相关产品推荐
相关产品推荐

