Javascript getter:从另一个getter内调用getter

时间:2020-08-12 09:46:09

标签: javascript reactjs

我正在尝试构建一个dateData对象,它看起来像这样:

  const [dateData] = React.useState({
    dateObject: new Date(),
    get currentYear() {
      return this.dateObject.getFullYear();
    },
    get currentMonth() {
      return this.dateObject.getMonth();
    },
    get firstDayOfMonth() {
      return this.dateObject(this.currentYear, this.currentMonth).getDay();
    }
  });

代码在get firstDayOfMonth()崩溃,说this.currentYear is not a function,但是吸气剂get currentYear()get currentMonth()正确返回了预期的数据,所以我知道他们正在访问{{ 1}}。

我要完成的事情在Javascript中不可行吗?

Edit vibrant-tereshkova-0esui

2 个答案:

答案 0 :(得分:2)

您的代码有错误。 请如下更新。

const [dateData] = React.useState({
    dateObject: new Date(),
    get currentYear() {
      return this.dateObject.getFullYear();
    },
    get currentMonth() {
      return this.dateObject.getMonth();
    },
    get firstDayOfMonth() {
      return new Date(this.currentYear, this.currentMonth, 1);
    }
  });

答案 1 :(得分:0)

首先,让我告诉您代码为何崩溃。 您已经在此处调用/调用了构造函数日期 dateObject: new Date(),。 同样,您尝试使用下面的方法调用它,这是错误的,这就是代码崩溃的原因。

get firstDayOfMonth() {
      return new Date(this.currentYear, this.currentMonth, 1);
    }

现在,解决方案是什么, 您可以使用新的日期来使用用户在以上答案中提供的解决方案>>

如果要坚持使用dateObject dateObject: new Date()中可用的相同日期,则可以尝试以下代码:

get firstDayOfMonth() {
  let bindedDate= Date.bind(this.dateObject)
  return new bindedDate(this.currentYear, this.currentMonth).getDay();
}