我正在尝试学习JavaScript中的结构和匿名函数,我看了很多以这种方式完成的代码或库。然而,当我尝试按照他们这样做的方式时,它似乎称错了。这是我的代码:
文件1:被称为startUp;
this.project = this.project || {};
(function(){
project.init = function (){
console.log("startUp");
project.Setup();
}
}());
文件2:名为Setup
this.project = this.project || {};
(function() {
var Setup = function() {
this.init();
};
var p = Setup.prototype;
p.init = function() {
console.log("Setup");
};
project.Setup = Setup;
}());
由于某种原因,设置中的innit没有被调用,但是启动无法像疯了一样循环。
答案 0 :(得分:2)
在Setup
内,this
不是您认为的那样。 this
由函数的调用方式设置。
因此,当您执行project.Setup();
时,this
内Setup
的值为project
。因此this.init()
正在调用project.int()
。这是调用project.Setup();
等等,创建一个无限循环。
Setup.prototype.init
时才会调用{p> new Setup
。