Javascript 是否可以将回调函数应用于";“新日期”;使用原型

Javascript 是否可以将回调函数应用于";“新日期”;使用原型,javascript,prototype-programming,Javascript,Prototype Programming,我想在使用prototype创建的每个日期中添加1个小时,现在我得到了: Date.prototype.addOneHr = function (){ this.setTime(this.getTime()+1*1000*60*60); } 但是,我必须每新日期()调用一次它: 这很不方便,而且给我带来了更多的麻烦。D: 所以我在想,如果每次我创建一个新的日期时都能调用addOneHr(),这样在编辑JavaScript时就不会让我头疼了 欢迎任何解决办法。谢谢。我强烈建议不要修改Da

我想在使用prototype创建的每个
日期中添加1个小时,现在我得到了:

Date.prototype.addOneHr = function (){
    this.setTime(this.getTime()+1*1000*60*60);
}
但是,我必须每
新日期()调用一次它:

这很不方便,而且给我带来了更多的麻烦。D:
所以我在想,如果每次我创建一个新的日期时都能调用
addOneHr()
,这样在编辑JavaScript时就不会让我头疼了


欢迎任何解决办法。谢谢。

我强烈建议不要修改
Date
的原型,以您想要的方式构造日期(这包括添加代码,以便在创建
日期时启动回调函数)

有人过来看你的代码时,不会马上意识到为什么所有的
newdate()
s都是一个小时以后的事

相反,为什么不创建一个helper函数来返回您想要的日期,并从任何地方调用它呢

function createDate() {
    var now = new Date();
    now.setHours(now.getHours() + 1);
    return now;
}
...

var date = createDate();

我强烈建议不要修改
Date
的原型,以您想要的方式构造日期(这包括添加代码以在创建
日期时关闭回调函数)

有人过来看你的代码时,不会马上意识到为什么所有的
newdate()
s都是一个小时以后的事

相反,为什么不创建一个helper函数来返回您想要的日期,并从任何地方调用它呢

function createDate() {
    var now = new Date();
    now.setHours(now.getHours() + 1);
    return now;
}
...

var date = createDate();

你不能按你的要求去做,但你可以通过稍微改变你的功能来让它变得更好:

Date.prototype.addOneHr = function() {
  this.setTime(this.getTime() + 1000 * 60 * 60);
  return this;
}
通过让它返回对象,您可以编写如下代码:

var a_date = new Date().addOneHr();

你不能按你的要求去做,但你可以通过稍微改变你的功能来让它变得更好:

Date.prototype.addOneHr = function() {
  this.setTime(this.getTime() + 1000 * 60 * 60);
  return this;
}
通过让它返回对象,您可以编写如下代码:

var a_date = new Date().addOneHr();

如果你要改变一个类的行为,那么你就有可能让其他看你的代码的人感到困惑,他们不希望你的代码工作得如此不同。当然,要遵循经典的OOP模式,您必须创建子代

DatePlusOneHour = Object.Extend(Date, {
    getTime: function() {
        return Date.prototype.getTime.call(this) + 1000*60*60;
    }
});

您可能需要重写的函数不止是
getTime
,或者您也可以这样重写构造函数。我相信您知道下一步要做什么。

如果您要更改类的行为,那么您可能会让其他查看您的代码的人感到困惑,他们不希望代码的工作方式如此不同。当然,要遵循经典的OOP模式,您必须创建子代

DatePlusOneHour = Object.Extend(Date, {
    getTime: function() {
        return Date.prototype.getTime.call(this) + 1000*60*60;
    }
});
您可能需要重写的函数不止是
getTime
,或者您也可以这样重写构造函数。我相信你知道下一步该怎么做