Javascript typescript";这";内传递函数
我有一个typescript类,定义如下:Javascript typescript";这";内传递函数,javascript,typescript,Javascript,Typescript,我有一个typescript类,定义如下: class Foo extends events.EventEmitter { private msg; constructor(){ super(); } public error=(err)=> { debug("got an error",err,this.msg.data); } setup=()=> { this.options = { error:
class Foo extends events.EventEmitter {
private msg;
constructor(){
super();
}
public error=(err)=> {
debug("got an error",err,this.msg.data);
}
setup=()=> {
this.options = {
error: this.error
}
}
run=()=> {
let x = require("someothermodule");
x.run(this.options);
}
}
当“x”调用选项时,我遇到的问题是。error函数是“TypeError:无法读取未定义的属性'data',果然,this.data是未定义的
我想知道的是如何在这个错误函数中引用“正确的”值
这是一个漫长旅程的结果,尝试了各种选项,绑定,试图将其存储在_This中(根本不起作用!))
我会很感激任何有洞察力的新手打字的家伙,所以也许我错过了一些非常明显的东西
谢谢因为您在类
Foo
中通过访问this
的错误回调应用了选项,所以在将这些选项应用到另一个函数(作用域)时,您需要绑定此作用域
要实现这一点,您的设置功能必须如下所示:
setup = () => {
this.options = {
error: this.error.bind(this)
}
}
由于使用错误回调应用选项,该错误回调正在类
Foo
中访问this
,因此在将这些选项应用于另一个函数(作用域)时,需要绑定此作用域
要实现这一点,您的设置功能必须如下所示:
setup = () => {
this.options = {
error: this.error.bind(this)
}
}
我没有看到任何代码设置
msg
字段的值。如果您从未更改this.msg
值,您希望它如何具有非未定义的值?创建选项对象时,尝试将Foo的范围绑定到error方法:error:this.error.bind(this)
。如果你需要更多的细节,我可以详细说明。@MattiasBuelens:对不起,这只是一个小代码“片段”——所以我没有充实所有的代码。apologies@FlorianTopf当前位置这似乎对我有用-非常感谢much@jmls好吧,如果我们看不到如何以及何时设置这个.msg
,我们就无法为您提供很多帮助。您的代码可以正常工作-假设this.msg
在x
调用错误回调时有一个值。我没有看到任何代码设置msg
字段的值。如果您从未更改this.msg
值,您希望它如何具有非未定义的值?创建选项对象时,尝试将Foo的范围绑定到error方法:error:this.error.bind(this)
。如果你需要更多的细节,我可以详细说明。@MattiasBuelens:对不起,这只是一个小代码“片段”——所以我没有充实所有的代码。apologies@FlorianTopf当前位置这似乎对我有用-非常感谢much@jmls好吧,如果我们看不到如何以及何时设置这个.msg
,我们就无法为您提供很多帮助。您拥有的代码可以正常工作-假设this.msg
在x
调用错误回调时有一个值。