为什么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;
}
}
答案 0 :(得分:0)
let date = this.born_date;
无法实现您想要的克隆日期的行为。它会复制对日期对象的引用,然后对setSeconds的调用稍后会对该对象进行突变(成员born_date
和局部变量date
都引用该对象)。
要克隆日期对象,可以执行以下操作:let date = new Date(this.born_date.valueOf());
。