js关于Date的问题

图片描述

图片描述
图片描述

new出来的这个date 和Date,以及Date()这三者有何区别?
为什么第一个能打印出时间戳,第二个会提示now 不是函数?

阅读 2.5k
5 个回答

Date你可以立即为是原型对象,date是实例对象。

Date.now属于原型对象提供的一个方法,date实例对象上并没有now方法(可以对应到Date.prototype上没有now方法)。

如果要类比类来理解的话,你可以将Date.now视作静态方法,date是Date的实例化。

console.dir(Date);

可以看到Date的一些信息。

now() 是Date的一个静态函数,所以必须以 Date.now() 的形式来使用

请参考《JavaScript高级程序设计》第六章

文档
now是定义在构造函数本身的方法,不是在原型上的方法,看看MDN上的polyfill就知道了

if (!Date.now) {
  Date.now = function now() {
    return new Date().getTime();
  };
}
function fn(){}
    fn.now = function(){
        return 10086;
    };
    var oFn = new fn();
    console.log(fn.now()); // 10086 fn 函数 上的 now  方法
    console.log(oFn.now); // undefined 也就是 说 实例 和 原型 和 链 中 没 now 这 属性
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏