我正在尝试了解 JavaScript 中的结构和匿名函数,并且我查看了很多以这种方式完成的代码或库。然而,当我尝试遵循他们的做法时,似乎调用了错误的 innit。这是我的代码:
文件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 没有被调用,但是启动 innit 正在疯狂循环。
最佳答案
在Setup
内部,this
并不是你想象的那样。 this
由函数的调用方式设置。
因此,当您执行 project.Setup();
时,Setup
中 this
的值为 project
。所以 this.init()
正在调用 project.int()
。它正在调用 project.Setup();
等等,从而创建无限循环。
Setup.prototype.init
仅在您执行 new Setup
时才会被调用。
关于javascript - 调用原型(prototype)函数会重复错误的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976778/