Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-可以重用Date()对象吗?_Javascript_Datetime_Date - Fatal编程技术网

Javascript-可以重用Date()对象吗?

Javascript-可以重用Date()对象吗?,javascript,datetime,date,Javascript,Datetime,Date,是否可以创建一个新的Date()对象来获取当前日期,然后在一段时间后,重用相同的Date()对象来获取新的当前时间 似乎每次需要当前日期/时间时,都必须创建一个新的日期对象 在我的特定应用程序中,我希望运行一个动画,对于动画的每一帧,我都需要获取当前时间。因此,每一帧创建一个新的日期对象(可能是1000帧?)只会随着时间的推移提高内存使用率 这方面有什么线索吗?除非单独存储,否则日期对象会自动被垃圾收集。此外,您可以在每次迭代中创建并存储同一变量的当前日期,而不必担心内存膨胀 例如: var c

是否可以创建一个新的Date()对象来获取当前日期,然后在一段时间后,重用相同的Date()对象来获取新的当前时间

似乎每次需要当前日期/时间时,都必须创建一个新的日期对象

在我的特定应用程序中,我希望运行一个动画,对于动画的每一帧,我都需要获取当前时间。因此,每一帧创建一个新的日期对象(可能是1000帧?)只会随着时间的推移提高内存使用率


这方面有什么线索吗?

除非单独存储,否则日期对象会自动被垃圾收集。此外,您可以在每次迭代中创建并存储同一变量的当前日期,而不必担心内存膨胀

例如:

var current = new Date()
for (var idx = 0; idx <= frameCount; ++idx) {
    current = new Date();

      // Do processing...
}
var current=新日期()

对于(var idx=0;idx如果您有现代浏览器,请调用

Date.now()
它返回一个包含历元时间的数字

数字是JavaScript中的基本元素,因此您不会创建任何新对象。但正如其他人所说,新对象并不是什么大问题


不过,您可能会对这种方法感兴趣,尤其是如果您不需要年、月和日,并且会对纪元时间感到满意的话。我想如果您真的想重用日期对象,可以使用从纪元时间派生的值调用setter,但我认为这种方法不会为您带来任何好处。

如果您实际上不想使用
date.now()
,不必创建
date
对象

var t = Date.now(); // 1318479105311
您可以使用以下工具将其填充到较旧的浏览器中:

if( !Date.now ) Date.now = function(){ return +(new Date); };

现代浏览器有
Date.now()
方法,它返回纪元时间而不创建对象。IE从版本9开始就有了它

我不确定这会有多大的优势,但是创建一个对象是非常便宜的。正如@icktoofay指出的,如果你不保留旧的日期,它们将被垃圾收集


编辑:。
Date。现在,Chrome的
速度实际上是Chrome的两倍,但是处于>3mhz的区域,我认为这对动画来说并不重要。

如果你创建一个新的
Date
对象,但是删除了对旧对象的引用,那么垃圾收集器就会得到它,并且内存使用不会随着时间的推移而增长。你的直觉是正确的t、 下面的答案有一些很好的选择。但是值得注意的是,JavaScript中的动画使用更为传统,如果你只针对现代浏览器,那么你应该研究一下。祝你好运!啊哈,这现在是有意义的。谢谢我认为
new Date()的问题
在动画帧中,与其说是内存使用量激增,不如说是垃圾收集在清理丢弃的对象时在动画过程中暂停/抖动。