'TypeError: is not a function' in NodeJS with Typescript
'TypeError: is not a function' in NodeJS with Typescript
我在使用 TypeScript 的 nodeJS 中遇到了这个问题。我已经在不使用和使用 this. :
的情况下进行了测试
this.funktion2();
^
TypeError: this.funktion2 is not a function
funktion1(); //case #two
^
ReferenceError: funktion1 is not defined
这是我的示例代码:
class App
{
constructor()
{
setTimeout(function(){
console.log('Hier 1');
this.funktion2();
}, 2500);
//I have only one of this cases in use
this.funktion1(); //case #one
funktion1(); //case #two
}
function funktion1()
{
console.log('Funktion 1');
}
funktion2()
{
console.log('Funktion 2');
}
}
new App();
我该如何修复它或给出解决方法?
感谢大家的帮助。
尝试以下示例
class App {
constructor() {
setTimeout(() => {
console.log('Hier 1');
this.funktion2();
}, 2500);
this.funktion1(); //case #one
}
funktion1() {
console.log('Funktion 1');
}
funktion2(){
console.log('Funktion 2');
}
}
new App();
另一件事是,在 setTimeout
中,如果您使用函数,则无法访问 class 上下文 this
。该函数创建一个新的上下文,因此一个新的 this
setTimeout(function(){
console.log('Hier 1');
this.funktion2();
}, 2500);
要访问当前上下文:
setTimeout(() => {
console.log('Hier 1');
this.funktion2();
}, 2500);
这个例子有点小错误
class App
{
constructor()
{
setTimeout(function(){
console.log('Hier 1');
//I have only one of this cases in use
this.funktion2(); //case #one
funktion2(); //case #two
}, 2500);
this.funktion1();// this work
}
function funktion1()
{
console.log('Funktion 1');
}
funktion2()
{
console.log('Funktion 2');
}
}
new App();
但我有一个解决方法,当我想调用 funktion2() 时,这不是很好,但它适用于我的情况:
class App
{
constructor(b)
{
if(b)
{
this.funktion1();
setTimeout(function(){
console.log('Hier 1');
new App(false);
}, 2500);
}
else
{
this.funktion2();
}
//case #one
//funktion1(); //case #two
}
funktion1()
{
console.log('Funktion 1');
}
funktion2()
{
console.log('Funktion 2');
}
}
new App();
但如果有人有更好的解决办法,我会很高兴。
我在使用 TypeScript 的 nodeJS 中遇到了这个问题。我已经在不使用和使用 this. :
的情况下进行了测试this.funktion2(); ^
TypeError: this.funktion2 is not a function
funktion1(); //case #two ^
ReferenceError: funktion1 is not defined
这是我的示例代码:
class App
{
constructor()
{
setTimeout(function(){
console.log('Hier 1');
this.funktion2();
}, 2500);
//I have only one of this cases in use
this.funktion1(); //case #one
funktion1(); //case #two
}
function funktion1()
{
console.log('Funktion 1');
}
funktion2()
{
console.log('Funktion 2');
}
}
new App();
我该如何修复它或给出解决方法?
感谢大家的帮助。
尝试以下示例
class App {
constructor() {
setTimeout(() => {
console.log('Hier 1');
this.funktion2();
}, 2500);
this.funktion1(); //case #one
}
funktion1() {
console.log('Funktion 1');
}
funktion2(){
console.log('Funktion 2');
}
}
new App();
另一件事是,在 setTimeout
中,如果您使用函数,则无法访问 class 上下文 this
。该函数创建一个新的上下文,因此一个新的 this
setTimeout(function(){
console.log('Hier 1');
this.funktion2();
}, 2500);
要访问当前上下文:
setTimeout(() => {
console.log('Hier 1');
this.funktion2();
}, 2500);
这个例子有点小错误
class App
{
constructor()
{
setTimeout(function(){
console.log('Hier 1');
//I have only one of this cases in use
this.funktion2(); //case #one
funktion2(); //case #two
}, 2500);
this.funktion1();// this work
}
function funktion1()
{
console.log('Funktion 1');
}
funktion2()
{
console.log('Funktion 2');
}
}
new App();
但我有一个解决方法,当我想调用 funktion2() 时,这不是很好,但它适用于我的情况:
class App
{
constructor(b)
{
if(b)
{
this.funktion1();
setTimeout(function(){
console.log('Hier 1');
new App(false);
}, 2500);
}
else
{
this.funktion2();
}
//case #one
//funktion1(); //case #two
}
funktion1()
{
console.log('Funktion 1');
}
funktion2()
{
console.log('Funktion 2');
}
}
new App();
但如果有人有更好的解决办法,我会很高兴。