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

Jim*_*are 2 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);
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 6

你需要使用:

new Date().getTime();
Run Code Online (Sandbox Code Playgroud)

代替

new Date.getTime();
Run Code Online (Sandbox Code Playgroud)

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

new Date.getTime();
Run Code Online (Sandbox Code Playgroud)

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

当你这样做时:

new Date().getTime();
Run Code Online (Sandbox Code Playgroud)

它基本上是这样做的:

(new Date()).getTime();
Run Code Online (Sandbox Code Playgroud)

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