+new Date()是一个东西;

+相当于.valueOf();

.getTime()这个也是得到毫秒数

//4个结果一样返回当前时间的毫秒数
alert(+new Date());
alert(+new Date);
var s=new Date();
alert(s.valueOf());
alert(s.getTime());

附送js获取时间的各种用法:

http://www.cnblogs.com/0banana0/archive/2011/05/25/2056614.html

 

var myDate = new Date();

var a=myDate.toLocaleString( );
2011-11-07 18:13:56

顺便说下valueOf的另一个用法:

valueOf() 方法可返回 Boolean 对象的原始值。

如果调用该方法的对象不是 Boolean,则抛出异常 TypeError。

var boo = new Boolean(false);
document.write(boo.valueOf()); 

其他用法:http://www.google.com.hk/search?sitesearch=w3school.com.cn&as_q=valueOf

 

另外是对+new Date()运行机制的推测(菜鸟拙见,如有不对之处还请指点一二):

    //同样是获得当前时间毫秒数,类型为number
    console.log(typeof +new Date);

    //+是一元运算符,相当于.valueOf(),而Date对象本身也有valueOf()
    console.log(+new Date().constructor.name);     //通过构造发现为NaN

    console.log(NaN.constructor.name);                 //而NaN的构造肯定是Number

    console.log(typeof NaN);      //NaN的类型为number

    console.log(Number());        //ECMAScript中Number对象中也是有valueOf()方法的
    

    //因此推测new Date后将Date对象通过+一元运算转换成了NaN而,通过Number的valueOf()方法后再得到number值

    console.log(new Date().valueOf());         //这是Date对象自身的方法

    //new Date后调用Date对象自身的方法getTime()得到number值
    console.log((new Date).getTime());      


所以 (new Date).getTime() 的效率比 +new Date() 更高。

另PS:Math 和 Error 对象都没有 valueOf 方法。

  

posted on 2014-10-13 00:42  Adrian丶  阅读(179)  评论(0)    收藏  举报