覆盖日期构造函数

时间:2019-02-15 18:42:51

标签: javascript

在创建新的Date对象之前,是否可以重写Date构造函数以检查有效日期?例如,在某些情况下,日期是动态创建的,而错误的日期是创建的。因此,如果我创建let d = new Date(2019, 1, 31),我希望日期构造函数检查日期是否在要创建的月份中的几天之内。

因此,当前如果我运行let d = new Date(2019, 1, 31),它将创建一个日期为2019年3月3日,因为2月只有28天。我希望日期构造函数首先进行验证,如果日期超出范围,则将日期创建为let d = new Date(2019, 1, 28),即2019年2月28日。

1 个答案:

答案 0 :(得分:0)

当然,您可以覆盖JS中的所有内容:

 const OriginalDate = Date;
 Date = function(...args) {
   // fancy checks
   return new OriginalDate(...args);
 };

但是请注意:更改JS内部结构可能会破坏页面上某处的代码,因此,在大型生产项目中绝对不要这样做。