在new Date上调用getTime时,Undefined不是一个函数

Undefined is not a function when calling getTime on new Date

本文关键字:函数 一个 Undefined Date new 调用 getTime      更新时间:2023-09-26

我得到"undefined不是一个函数"当试图运行这个。我错过了什么?

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);

您需要使用:

new Date().getTime();
不是

new Date.getTime();

这里有一些关于正在做什么的解释。当你这样做的时候:

new Date.getTime();

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

当你这样做的时候:

new Date().getTime();

它实际上是这样做的:

(new Date()).getTime();

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

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

的例子:

var date = new Date()
start = date.getTime();
http://jsfiddle.net/3TJLq/