创建一个新的Date对象或使用javascript的setter方法Date()

时间:2014-05-15 15:31:22

标签: javascript date

如果我要使用Date()生成日期并在我的脚本中使用它的方法,我应该创建一个Date()对象并重新使用它,或者每次只创建一个新实例吗?

这样做效率更高\更快:

var1 = new Date(2014, 5, 3)
var2 = new Date(2013, 2, 30)
var3 = new Date(2015, 10, 2)

或者这个:

myDate = new Date()

myDate.setDate(3)
myDate.setMonth(5)
myDate.setYear(2014)
var1 = myDate

myDate.setDate(30)
myDate.setMonth(2)
myDate.setYear(2013)
var2 = myDate

myDate.setDate(2)
myDate.setMonth(10)
myDate.setYear(2015)
var3 = myDate

编辑:我的问题不是很清楚,让我试着解释一下:

我只使用Date()对象作为其方法并生成日期 - 这意味着我真的不需要一堆Date()对象,我可以使用它来执行一次性操作,如生成一些日期和调用类似toJSON()的方法或其他东西。在我生成日期并调用方法之后,我不需要挂起持久对象,因为我不会对它做任何事情。是否会消耗更少的资源来重用这样的Date()对象,还是更慢?

另一个编辑: 我以为我也可以把它放在一个函数中,所以我会这样做:

myDate = new Date();
setDate = function(dateObj,day,month,year) {
    dateObj.setDate(dat);
    dateObj.setMonth(month);
    dateObj.setYear(year);
    return myDate;
}

var1 = setDate(myDate,12,10,2014);

这样做有什么价值?

2 个答案:

答案 0 :(得分:3)

你的例子是两回事。第一个示例创建三个单独的Date对象,它们可以有三个不同的日期。

第二个示例创建一个Date对象,var1,var2和var3指向。当您更改Date对象时,var1,var2和var3都将看到该更改。

答案 1 :(得分:0)

new Date是一个构造函数。它是用javascript编写的。在OO编程中,您通常不会复制代码。因此,如果你有一个构造函数new Date() - 你在JS和setter中,那么很可能新的Date(2013,2,30)相当于:

var myDate = new Date();
myDate.setDate(30);
myDate.setMonth(2);
myDate.setYear(2013);

根据这一点,单独的分配将花费你,而你提出的第二种方式更快。 但是(!!!)这两种方式不会给出相同的结果。在第一个你获得三个不同的对象。在后来你只得到一个。