javascript - 调用原型(prototype)函数会重复错误的函数

标签 javascript

我正在尝试了解 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(); 时,Setupthis 的值为 project 。所以 this.init() 正在调用 project.int()。它正在调用 project.Setup(); 等等,从而创建无限循环。

Setup.prototype.init 仅在您执行 new Setup 时才会被调用。

关于javascript - 调用原型(prototype)函数会重复错误的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976778/

相关文章:

javascript - 如何将 JavaScript 变量值转换为 PHP 变量

javascript - 在 Three.js 中嵌套 WebGLRenderTargets

javascript - div 中的 Google 新闻框

javascript - 在 React 组件的类之外编写函数

javascript - knockout 无容器 'with' 绑定(bind)不起作用

javascript - 从回调中获取值(value)

javascript - javascript 切换显示/隐藏按钮适用于小规模,但不适用于我的较大 HTML 代码

javascript - 忽略机器人删除的消息

javascript - Slick Carousel - 如何更改默认按钮

javascript - 找到模式并动态构建正则表达式来匹配字符串