2014-05-05 28 views
2

當試圖運行它時,我得到「未定義不是一個函數」。我錯過了什麼?未定義不是在新的日期調用getTime時函數

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

在哪一行,你得到這個錯誤? – jfriend00

+1

[javascript日期().getTime()不是函數]可能的重複(http://stackoverflow.com/questions/10395242/javascript-date-gettime-is-not-a-function) – isherwood

+0

哦我的。 hehe,ofc。謝謝 – JimmyRare

回答

6

您需要使用:的

new Date().getTime(); 

代替

new Date.getTime(); 

這裏是什麼做一些解釋。當你這樣做:

new Date.getTime(); 

它看起來對Date構造的getTime()財產,這是因爲undefined上存在的原型或實際實例化對象屬性,而不是在構造函數本身。然後它試圖做new undefined這顯然不工作,並給你你看到的錯誤。

當你這樣做:

new Date().getTime(); 

它基本上是這樣做的:

(new Date()).getTime(); 

因爲運算符優先級的,這是你想要的。它會創建一個新的Date()對象,然後調用.getTime()方法。

+0

謝謝,有時你只是看不到明顯的。 :) – JimmyRare

1

您需要在調用方法之前實例化Date對象。

例子:

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

http://jsfiddle.net/3TJLq/

相關問題