Flash 比较as2中的日期对象

Flash 比较as2中的日期对象,flash,actionscript,date,comparison,actionscript-2,Flash,Actionscript,Date,Comparison,Actionscript 2,我一定错过了什么 date1 = new Date(2010, 01, 10, 12, 10, 30, 000); date2 = new Date(2010, 01, 10, 12, 10, 30, 000); trace(date1 == date2); // returns false 但是, date1 = new Date(2010, 01, 10, 12, 10, 30, 000); date2 = new Date(2010, 01, 10, 12, 10, 30, 000);

我一定错过了什么

date1 = new Date(2010, 01, 10, 12, 10, 30, 000);
date2 = new Date(2010, 01, 10, 12, 10, 30, 000);

trace(date1 == date2); // returns false
但是,

date1 = new Date(2010, 01, 10, 12, 10, 30, 000);
date2 = new Date(2010, 01, 10, 12, 10, 30, 000);

trace(date1.toString() == date2.toString()); // returns true

所以。。。发生什么事?显然,这两个日期对象在某种程度上存在细微的差异,当它们被解析为字符串时,这种差异就被忽略了,但是它们有什么不同呢?

当你像这样比较两个对象时,你真正要比较的是它们的对象标识,在较低的层次上,它们在RAM中的位置。如果执行
new Date()
,则会创建一个新对象,因此两个对象将不匹配,即使其中存储的值不匹配

然而,比较字符串是一种特殊情况,在这种情况下,字符串逐字符进行比较,而不是比较它们在内存中的位置

比较日期的常用方法是使用其
time
属性,该属性是一个表示日期对象为UNIX时间的数字,即自UNIX纪元1970-01-01 00:00开始以来的秒数

trace(date1.time == date2.time); // traces "true"

干杯

疯狂-我想我认为这种比较只有在使用“==”运算符时才会发生-即“==”比较值,“==”比较实际的唯一变量本身。但没那么多,嗯?很高兴知道,谢谢!
=
=
操作符是相同的(我认为除了字符串之外,它们还可以被插入)。flash运行时不支持覆盖相等,因此
=
始终是一个参考比较。