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

如何在JavaScript中为类添加多个属性并实现实例属性取值方法

问题根因

你当前编写的getDetails()方法存在逻辑错误:函数执行过程中只要遇到第一个return语句就会直接终止运行,因此你写的后两行返回年龄、职业的代码永远不会触发,调用该方法只能拿到姓名属性。

修复方案

方案1:返回格式化拼接的详情字符串(适合直接渲染到页面)

修改后的JS代码如下:

function Person(name, age, occupation) {
  this.name = name;
  this.age = age;
  this.occupation = occupation;
}
Person.prototype.getDetails = function () {
  // 按需调整你想要展示的格式即可
  return `姓名:${this.name},年龄:${this.age},职业:${this.occupation}`;
};
var john = new Person("John Doe", "32", "Web Developer");

document
  .getElementById('demo')
  .innerText = john.getDetails();

HTML代码无需改动,运行后页面会直接展示拼接好的完整人员信息。

方案2:返回属性对象(适合后续需要单独取用各属性的场景)

如果后续你需要单独获取某一个属性值,可以修改getDetails()返回所有属性组成的对象:

Person.prototype.getDetails = function () {
  return {
    name: this.name,
    age: this.age,
    occupation: this.occupation
  }
};
// 调用示例:
// 取所有属性:john.getDetails()
// 单独取职业:john.getDetails().occupation

扩展优化:支持便捷传入多组属性

如果之后需要给Person类新增更多属性,挨个传位置参数会很麻烦,可以修改构造函数支持传入对象参数,新增属性无需调整构造函数逻辑:

// 修改后的构造函数
function Person(personInfo) {
  for(let key in personInfo) {
    this[key] = personInfo[key]
  }
}
// 调用示例,新增属性直接加在传入对象里即可
var john = new Person({
  name: "John Doe",
  age: "32",
  occupation: "Web Developer",
  city: "上海",
  workYear: "5年"
})

内容的提问来源于stack exchange,提问作者Muhammad Riad Ibnul Lal Sharif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:48:00