Как расширить объект Date в Javascript?

Я пытаюсь создать подкласс / расширить собственный объект Date, не изменяя сам собственный объект.

Я пробовал это:

    var util = require('util');

    function MyDate() {
        Date.call(this);
    }
    util.inherits(MyDate, Date);

    MyDate.prototype.doSomething = function() {
        console.log('Doing something...');
    };        

    var date = new MyDate();
    date.doSomething();

    console.log(date);
    console.log(date.getHours());

и это:

function MyDate() {

    }

    MyDate.prototype = new Date();

    MyDate.prototype.doSomething = function() {
        console.log("DO");
    }

    var date = new MyDate();
    date.doSomething();
    console.log(date);

В обоих случаях date.doSomething () работает, но когда я вызываю любой из собственных методов, например date.getHours () или даже console.log (date) , я get 'TypeError: это не объект Date.'

Есть идеи? Или я застрял на расширении объекта Date верхнего уровня?

22
задан evilcelery 20 May 2011 в 16:56
поделиться