2014-01-07 48 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