在新日期调用getTime时,未定义不是函数

时间:2014-05-05 20:44:59

标签: javascript

尝试运行时,我得到“未定义不是函数”。我错过了什么?

function bench(func) {
  var start = new Date.getTime();

  for(var i = 0; i < 10000; i++) {
    func();
  }

  console.log(func, new Date.getTime() - start);
}

function forLoop() {

    var counter = 0;
    for(var i = 0; i < 10; i++) {
      counter += 1;
    }

    return counter;

}

bench(forLoop);

2 个答案:

答案 0 :(得分:6)

您需要使用:

new Date().getTime();

而不是

new Date.getTime();

以下是对正在进行的操作的一些解释。当你这样做时:

new Date.getTime();

它在getTime()构造函数中查找Date属性,即undefined,因为该属性存在于原型或实际实例化对象上,而不存在于构造函数本身上。然后它会尝试new undefined这显然不起作用,并为您提供您看到的错误。

当你这样做时:

new Date().getTime();

基本上是这样做的:

(new Date()).getTime();

因为运算符优先级而且这就是你想要的。它将创建一个新的Date()对象,然后在其上调用.getTime()方法。

答案 1 :(得分:1)

您需要在调用Date方法之前实例化Date对象。

示例:

var date = new Date()
start = date.getTime();

http://jsfiddle.net/3TJLq/