2014-01-07 46 views
0

我想了解JavaScript中的結構和匿名函數,並且我看了很多代碼或圖書館這樣做了。但是,當我試圖按照他們的方式進行操作時,它似乎稱之爲錯誤的innit。這裏是我的代碼:調用原型函數重複錯誤的函數

文件1:被稱爲startUp;

this.project = this.project || {}; 

(function(){ 

    project.init = function(){ 
     console.log("startUp"); 
     project.Setup(); 

    } 

}()); 

文件2:被稱爲設置

this.project = this.project || {}; 

(function() { 

    var Setup = function() { 
     this.init(); 
    }; 

    var p = Setup.prototype; 

    p.init = function() { 
     console.log("Setup"); 
    }; 

    project.Setup = Setup; 
}()); 

由於某種原因在安裝的是嗎不被調用,但在啓動是嗎是循環像瘋了似的。

回答

2

裏面Setup,this是不是你認爲它是。 this由函數的調用方式設置。

所以當你做project.Setup();時,Setup裏面的值thisproject。因此this.init()正在調用project.int()。這是呼籲project.Setup();等,創建一個無限循環。

Setup.prototype.init只有在您撥打new Setup時纔會被調用。

+0

哦,這個工作完全謝謝你:D – user629283

+0

只是一個提示'新的安裝程序'真的不是這裏的解決方案。我只是想解釋'this'(和'new')是如何工作的。 –

+0

哦對,但它似乎爲我做了合適的工作。反正乾杯 – user629283