Angular.js - 在哪里扩展JavaScript日期?

时间:2014-03-08 12:12:59

标签: javascript angularjs date

我想扩展JavaScript的基本Date对象,其功能如下:

Date.prototype.getWeek = function() {
    var date = new Date(this.getTime());
    date.setHours(0, 0, 0, 0);
    // Thursday in current week decides the year.
    date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
    // January 4 is always in week 1.
    var week1 = new Date(date.getFullYear(), 0, 4);
    // Adjust to Thursday in week 1 and count number of weeks from date to week1.
    return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
};

目前,我将此逻辑放入名为objectExtenders.js的文件中,该文件以index.html链接,如下所示:

<script src="scripts/misc/dateExtenders.js"></script>

将此逻辑放入服务中似乎并不合适,因为它会修改全局Date对象。因此,我认为将此类服务注入特定控制器是没有意义的,因为无论如何它都适用于所有控制器。

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以改为创建一个名为DateUtils的服务,以便注入您的控制器,该服务可以具有适用于日期的功能。

因此,您可以拨打myDate.getWeek()而不是DateUtils.getWeek(myDate)

答案 1 :(得分:0)

你是对的,这种修改是全球性的。它会影响所有Date个对象,无论它们是否在角度范围内。所以这个问题与角度或任何其他框架无关。只需将代码放在JavaScript文件中,并将该文件包含在要添加此功能的文件中即可。