Javascript:覆盖日期-如何获取传递给构造函数的值

时间:2019-04-01 16:49:26

标签: javascript

我正在研究并且还想扩展Date对象,而我喜欢做的一件事情就是能够访问原型中构造函数中传递的值。目的是根据我将要“拦截”该值时要建立的一些标准来更改该值。

在此示例中,我希望能够访问在new Date()期间传递的值“ 2019-03-31”。

我知道有Moment JS,也许它可以满足我的需求……但是我的目标是研究“原型”的未来使用。

Date.prototype.myTest = function myTest() {

  let datetime = this;

  return 'ok';

};
let dt = new Date("2019-03-31").myTest();

2 个答案:

答案 0 :(得分:1)

如果要扩展ExpressionWrapper对象,一种非常简单的方法是将ES6类与ExpressionWrapper一起使用。与尝试修改内置日期构造函数相比,它更容易并且可能是一个更好的主意。在构造函数中,您可以执行任何操作,包括保存原始输入以供以后使用或立即使用:

Date

答案 1 :(得分:0)

很抱歉,但是您从Date documentation中可以看到,作为参数传递给构造函数的字符串没有保存。您只能访问某些getter和setter方法来修改Date。 因此,您可以在函数中以自己喜欢的特定格式重建日期,而不必获取原始字符串。

解决问题的唯一方法是使用ES6并扩展Date类。

class TestDate extends Date{
    constructor(date){
        super(date)
        this.const_date = date  // save input
    }
    myTest() {
        return this.const_date;
    };
}


console.log((new TestDate("2019-04-16")).myTest())