2015-06-16 101 views
0

這是我的代碼:如何在不重寫Javascript中的其他實例的情況下創建函數的新實例?

function wasCalled() { 
     if (typeof (called) === "undefined") { 
      console.log("This is the first time this instance runs") 
      called = true 
     } 
     else { 
      console.log("this is not really a new instance") 
     } 
    } 
    a = new wasCalled() 
    b = new wasCalled() 

它檢查是否函數的實例已經運行。我錯過了一些明顯的東西。它是什麼?

這裏有一個小提琴:http://jsfiddle.net/ekoo6pef/

檢查控制檯。

這是輸出:

This is the first time this instance runs 
    this is not really a new instance 

我希望得到「這是第一次遇到這種情況下運行」的兩個電話。

感謝您的善意幫助。

+4

然後不要創建'調用'變量?順便說一下那個叫變量是全球性的,如果你想它作爲實例的一部分,你應該使用'this.called',或使用'VAR called'如果你想把它當作一個局部變量 –

+0

我要麼不理解你或者你不理解這個問題。我創建它以便查看變量是否被刷新爲新實例 –

+3

爲什麼使用「被調用」變量?和一個if? 事情是,當你創建變量「調用」爲全局變量(因爲你沒有使用「var叫做」聲明),那麼它存儲下一次調用的狀態 –

回答

0

的事情是,你所創建的變量called全球(因爲你不使用var called聲明),那麼它存儲的狀態都用於函數下次調用(也有,你看到的區別第二個電話)

相關問題