TypeScript变异道具

时间:2019-03-14 02:38:24

标签: typescript

为什么born_date被突变?我在将其更改之前将其克隆到date上,我是否缺少某些内容?

export default class Gigasecond {
  born_date: Date;

  constructor(date: Date) {
    this.born_date = date;
  }

  date(): Date {
    let date = this.born_date;
    let date_plus_giga = date.getSeconds() + 1000000000;
    date.setSeconds(date_plus_giga);
    return date;
  }
}

1 个答案:

答案 0 :(得分:0)

let date = this.born_date;无法实现您想要的克隆日期的行为。它会复制对日期对象的引用,然后对setSeconds的调用稍后会对该对象进行突变(成员born_date和局部变量date都引用该对象)。

要克隆日期对象,可以执行以下操作:let date = new Date(this.born_date.valueOf());