Javascript 为什么setFullYear方法concatated to new Date()返回毫秒?
我在玩一些代码,为了缩短代码,我想做如下事情:Javascript 为什么setFullYear方法concatated to new Date()返回毫秒?,javascript,date,Javascript,Date,我在玩一些代码,为了缩短代码,我想做如下事情: //This sets the date to milliseconds document.getElementById('date').innerHTML= new Date().setFullYear(2020); //This sets the date to GMT date notation var d = new Date(); d.setFullYear(2020); document.getElementById('date')
//This sets the date to milliseconds
document.getElementById('date').innerHTML= new Date().setFullYear(2020);
//This sets the date to GMT date notation
var d = new Date();
d.setFullYear(2020);
document.getElementById('date').innerHTML= d;
这是怎么回事?为什么我不能在新的Date方法上进行协调并直接调用该方法呢。奇怪的是,它试图做一些事情,但不知何故失败了,并回落到毫秒。有人能解释一下吗
请参阅fiddle:这是因为在第一种情况下,您正在提醒调用
.setFullYear
方法的返回值,该方法以毫秒为单位返回值。在第二个示例中,您正在警告一个日期对象,将在该对象上调用.toString
方法,从而生成您看到的日期格式
编辑:
如果您仍然不明白为什么在案例一中给出的是方法的返回值而不是日期,那么可以这样想:如果您调用对象的方法,如
document.getElementById
,您希望调用该方法的结果是返回值,在本例中是元素
。您不会期望拿回文档
。你的情况也一样。您正在调用(new Date()).setFullYear()
,它返回一个数字,并希望它返回它所属的日期对象,这是没有意义的。因为的返回值是当前对象的[…]新时间戳值。[…]
@t.niese谢谢,因此,它不是首先将日期转换为对象,然后对其调用setFullYear方法。你不能这样做感觉很奇怪,但这是有充分理由的。如果你期望new Date().setFullYear(2020)
会返回日期对象,那么你也应该期望document.getElementById('Date').innerHTML(/code>getElementById('Date')会返回日期对象
不会返回id为日期的元素,而是文档
new Date()
创建一个日期对象,在该对象上调用setFullYear(2020)
,然后setFullYear(2020)
的返回值就是表达式的结果new Date()。setFullYear(2020)
,表达式的结果就是指定的值。@t.niese好的,我知道你的意思了。所以我只是调用setFullYear方法。我完全偏离了这里…我真的在想我可以在Date的新实例上直接调用该方法。嗯,我每天都在学习:)好的,谢谢你的回答。所以它不会先计算日期,然后对其调用setFullYear方法?这似乎违反直觉。但是谢谢!我不确定我是否理解你的问题。您询问的是第一个案例还是第二个案例?新日期((new Date())。setFullYear(2020))
可能是您在案例1中寻找的。然而,这是不必要的混乱。首先,我不明白为什么不能直接调用setFullYear方法。为什么不直接用所有附加的方法对一个对象进行评估。我编辑了我的答案,以帮助解释我认为你的意思。