Javascript 为什么我得到了未定义的变量?
我有财产课:Javascript 为什么我得到了未定义的变量?,javascript,typescript,Javascript,Typescript,我有财产课: public requestLoadPersonal: Personal[] = []; 还有一种方法: private filterByGender(selectedValue: any): void { console.log(this.requestLoadPersonal); this.requestLoadPersonal = this.requestLoadPersonal.filter( (p: Personal) => {
public requestLoadPersonal: Personal[] = [];
还有一种方法:
private filterByGender(selectedValue: any): void {
console.log(this.requestLoadPersonal);
this.requestLoadPersonal = this.requestLoadPersonal.filter(
(p: Personal) => {
return selectedValue ? p.gender == selectedValue : true;
}
);
}
在类的构造函数中,我有:
public filterFn = {
name: this.filterByGender
}
为什么当我从objectfilterFn
按键调用函数this.filterByGender
时。我收到一条未定义的消息,为什么变量this.requestLoadPersonal
在内部不可用:
console.log(this.requestLoadPersonal)代码>
作为:
this.filterFn['name']({...});
我尝试绑定变量:
this.filterFn['name']({...}).bind(this.requestLoadPersonal);
在构造函数中,应将函数绑定到this
,如下所示:
constructor() { this.filterFn = { name: this.filterByName.bind(this) }; }
因为只要{name:this.filterByName}
就会丢失this
上下文,即。
filterByName
具有某个其他实例的上下文
然而,我建议你简化一切,让它更直截了当。目前,它很复杂,因此容易出错。您是否尝试过使用箭头函数?不,它在object中是一个很普通的函数也许您应该只绑定这个
?您能展示一下您的构造函数吗?另外,您应该编写准确的错误消息:未定义什么?当然:constructor(){this.filterFn={name:this.filterByName};}
当然,我尝试过:this.filterFn={name:this.filterByName.bind(this.requestLoadPersonal)}
。它仍然不起作用不,你应该绑定这个
,而不是这个。requestLoadPersonal
我试过了,这个
我在里面仍然没有定义function@OPV哦,好的,恭喜:)如果我是你,我会简化你的代码。@dince12你经常使用它,但不完全理解为什么?