Javascript TypeError不是函数问题

时间:2016-05-17 13:00:16

标签: javascript resize ticker

遇到我无法理解的JavaScript问题。我正在创建一个JavaScript“类”,它应该在画布上绘制一些东西,如果窗口被调整大小,它应该知道如何自己调整画布大小并修复绘制对象的方向。

当我从我自己的测试html中使用这个类时,一切似乎工作得很好,但是当我将我的类提取到一个单独的.js文件中以便添加为<script src="myclass.js"></script>以供其他人使用时,它开始抛出一个{调整大小时出现{1}}错误。这很烦人,因为this.func02显然是一个函数。

此外,还有一个不断调用func03的自动收报机,在控制台中我可以清楚地看到日志被定期打印出来(这些日志来自func01,由func03调用,与func02调用的方式完全相同)。即使我在调整大小时出现TypeError,这些日志仍然可以正常工作。

JS:

"TypeError: this.func02 is not a function"

如果有人知道为什么会这样,请写点东西。我很难调试这个。我试图从我的程序中删除所有不相关的代码,如果你需要更多信息,我会添加它。

注意:这里的问题不是关键字“this”。也许这是问题的一部分,但并不是全部。确切的代码在使用html的一个文件中有效,但是当它被添加到html中时不起作用

1 个答案:

答案 0 :(得分:0)

这是一个函数内部引用函数而不是类来保存对类的引用并在函数中使用它:

function myClass() {
    var myclass = this;
    this.func01 = function() {
          console.log("func1");
          //do stuff
    }
    this.func02 = function() { //<- this doesn't work ???
        myclass.func01(); //<- I get typeError on this call
        //and do more stuff
    }
    this.func03 = function() { //<- this works ???
        myclass.func01();
        //stuff
    }
    window.addEventListener("resize", this.func02, false);
}

function useMe() {
    objectOfMyClass = new myClass();
    setInterval(tickerThatCallsFunc03ofMyClass, 50);
}