覆盖日期对象错误:“这不是Date对象。”

时间:2014-08-04 15:07:09

标签: javascript jquery datetime datepicker

我的Web应用程序需要特定的日期值。我改变了日期原型。但它不是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;

错误:

“Uncaught TypeError:这不是Date对象。”

如何更改Javascript Date对象?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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