Javascript TypeError 不是函数问题
Javascript TypeError is not a function issue
运行 变成了一个我无法理解的 JavaScript 问题。我正在制作一个 JavaScript "class" 应该在 canvas 上绘制一些东西,如果 window 被调整大小,它应该知道如何调整 canvas 并固定绘制对象的方向。
当我从我自己的测试 html 中使用这个 class 时,一切似乎都工作正常,但是当我将我的 class 提取到一个单独的 .js 文件中以添加为 <script src="myclass.js"></script>
对于其他人的使用,它在调整大小时开始抛出 "TypeError: this.func02 is not a function"
错误。这很烦人,因为 this.func02 显然是一个函数。
此外,还有一个不断调用 func03 的自动收报机,在控制台中我可以清楚地看到定期打印的日志(这些日志发生在 func01 中,由 func03 调用,与 func02 调用它的方式完全相同) .即使在我调整大小时出现 TypeError 之后,这些日志仍会继续工作。
JS:
function myClass() {
this.func01 = function() {
console.log("func1");
//do stuff
}
this.func02 = function() { //<- this doesn't work ???
this.func01();
//and do more stuff
}
this.func03 = function() { //<- this works ???
this.func01();
//stuff
}
window.addEventListener("resize", this.func02, false);
}
function useMe() {
objectOfMyClass = new myClass();
setInterval(tickerThatCallsFunc03ofMyClass, 50);
}
如果有人知道为什么会这样,请写点东西。我很难调试这个。我试图从我的程序中删除所有不相关的代码,如果您需要更多信息post,我会添加它。
注意:这里的问题不是关键字 "this"。也许这是问题的一部分,但不是全部。当它与 html 在一个文件中时,确切的代码有效,但当它被添加到 html 时不起作用
这是在函数内部引用函数而不是 class 以保存对 class 的引用并在函数中使用它:
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);
}
运行 变成了一个我无法理解的 JavaScript 问题。我正在制作一个 JavaScript "class" 应该在 canvas 上绘制一些东西,如果 window 被调整大小,它应该知道如何调整 canvas 并固定绘制对象的方向。
当我从我自己的测试 html 中使用这个 class 时,一切似乎都工作正常,但是当我将我的 class 提取到一个单独的 .js 文件中以添加为 <script src="myclass.js"></script>
对于其他人的使用,它在调整大小时开始抛出 "TypeError: this.func02 is not a function"
错误。这很烦人,因为 this.func02 显然是一个函数。
此外,还有一个不断调用 func03 的自动收报机,在控制台中我可以清楚地看到定期打印的日志(这些日志发生在 func01 中,由 func03 调用,与 func02 调用它的方式完全相同) .即使在我调整大小时出现 TypeError 之后,这些日志仍会继续工作。
JS:
function myClass() {
this.func01 = function() {
console.log("func1");
//do stuff
}
this.func02 = function() { //<- this doesn't work ???
this.func01();
//and do more stuff
}
this.func03 = function() { //<- this works ???
this.func01();
//stuff
}
window.addEventListener("resize", this.func02, false);
}
function useMe() {
objectOfMyClass = new myClass();
setInterval(tickerThatCallsFunc03ofMyClass, 50);
}
如果有人知道为什么会这样,请写点东西。我很难调试这个。我试图从我的程序中删除所有不相关的代码,如果您需要更多信息post,我会添加它。
注意:这里的问题不是关键字 "this"。也许这是问题的一部分,但不是全部。当它与 html 在一个文件中时,确切的代码有效,但当它被添加到 html 时不起作用
这是在函数内部引用函数而不是 class 以保存对 class 的引用并在函数中使用它:
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);
}