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

如何在JavaScript对象中实现两个属性值相加?

解决对象内部属性计算的问题

你当前的写法无效,原因有两个:一是对象字面量初始化阶段,无法直接引用自身的其他属性;二是[hours]是创建数组的语法,不是引用属性的正确方式。另外原代码还有两处小错误:mintues拼写应为minutes,第二个对象的title属性末尾缺了逗号,会导致语法报错。

下面提供几种可行的解决方案:

方案1:先创建对象,再批量赋值

最直接的方式,先定义对象基础属性,再遍历计算totalLength:

let movies = [
  {
    title: "Rosaline",
    hours: 1,
    minutes: 36
  },
  {
    title: "The Good Nurse",
    hours: 2,
    minutes: 3
  }
];

// 遍历数组为每个对象添加计算后的时长
movies.forEach(movie => {
  movie.totalLength = movie.hours * 60 + movie.minutes;
});

方案2:使用getter动态计算

用getter属性可以让totalLength在被访问时自动计算,后续修改hours或minutes时,它也会同步更新:

let movies = [
  {
    title: "Rosaline",
    hours: 1,
    minutes: 36,
    get totalLength() {
      return this.hours * 60 + this.minutes;
    }
  },
  {
    title: "The Good Nurse",
    hours: 2,
    minutes: 3,
    get totalLength() {
      return this.hours * 60 + this.minutes;
    }
  }
];

// 直接访问即可得到结果
console.log(movies[0].totalLength); // 输出96

方案3:用工厂函数创建对象

如果需要创建多个同结构的电影对象,工厂函数能避免重复代码,一次性完成属性定义和计算:

function createMovie(title, hours, minutes) {
  return {
    title,
    hours,
    minutes,
    totalLength: hours * 60 + minutes
  };
}

let movies = [
  createMovie("Rosaline", 1, 36),
  createMovie("The Good Nurse", 2, 3)
];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:45:33