【问题标题】:Override Date Object Error: "this is not a Date object."覆盖日期对象错误:“这不是日期对象。”
【发布时间】:2014-09-27 02:39:38
【问题描述】:

我的 Web 应用程序需要一个特定的日期值。我更改了 Date 原型。但它不是 Jquery Date 的有效日期。

InitDate = Date;
InitDate.prototype = Date.prototype;

Date = function () {
    if (arguments.length == 0) {
            var now = new InitDate();
            var date = new InitDate(2013, 8, 3);
            date.setHours(now.getHours());
            date.setMinutes(now.getMinutes());
            date.setSeconds(now.getSeconds());
            date.setMilliseconds(now.getMilliseconds());
            date.prototype = Date.prototype;
      return date;


    }
    else {
        var date = InitDate.apply(this, arguments);
        return date;
    }
};  

Date.prototype = InitDate.prototype;

错误:

“未捕获的 TypeError:这不是 Date 对象。”

如何更改 Javascript 日期对象?

小提琴考试:http://jsfiddle.net/fe3W2/

【问题讨论】:

    标签: javascript jquery datetime datepicker


    【解决方案1】:

    当我更改InitDate.apply(this, arguments); 代码块时,问题已解决:

    InitDate = Date;
    
    Date = function () {
        if (arguments.length == 0) {
                var now = new InitDate();
                var date = new InitDate(2013, 8, 3);
                date.setHours(now.getHours());
                date.setMinutes(now.getMinutes());
                date.setSeconds(now.getSeconds());
                date.setMilliseconds(now.getMilliseconds()); 
                return date; 
        }
        else {
              var dte = [0, 0, 0, 0, 0, 0];
                for (var i = 0; i < arguments.length && i < 7; i++) {
                    dte[i] = arguments[i];
                }
                var newDate = new InitDate(dte[0], dte[1], dte[2], dte[3], dte[4], dte[5]);
                return newDate;
        }
    };  
    

    apply() 方法的信息:http://msdn.microsoft.com/en-us/library/ie/4zc42wh1(v=vs.94).aspx

    【讨论】:

      【解决方案2】:

      虽然重写 Date() 函数可以使用上述方法,但静态方法会丢失。因此,由于这些方法未定义,因此无法调用 Date.now() 或 Date.parse(...)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-01
        • 2013-12-03
        • 2011-03-21
        相关资源
        最近更新 更多