Sah*_*hin 0 javascript oop class typescript
class Outer{
private outFunction(){
console.log("Okay!");
}
public functionWeCall(){
function innerFunction(){
this.outFunction(); //That doesn't work
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图将代码拆分为函数,以提高可读性。但这不起作用,如何从内部函数调用外部类函数?
这是一个范围问题。当你到达functionWeCall(),this开始引用那个函数而不是类时,因此outFunction()不存在于this。典型的解决方法可能如下所示:
class Outer {
private outFunction() {
console.log("Okay!");
}
public functionWeCall() {
let _this = this;
function innerFunction() {
_this.outFunction();
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但我宁愿建议重新处理整个事情,这样你就没有这样的嵌套函数。
编辑:正如@Aluan Haddad 所建议的,这是同样的事情,但有一个箭头函数:
class Outer {
private outFunction() {
console.log("Okay!");
}
public functionWeCall() {
() => {
this.outFunction();
}
}
}
Run Code Online (Sandbox Code Playgroud)
...如果您希望内部函数仍然可调用,请将其分配给一个变量:
class Outer {
private outFunction() {
console.log("Okay!");
}
public functionWeCall() {
let innerFunction = () => {
this.outFunction();
}
innerFunction(); // this could be anywhere in the scope of functionWeCall()
}
}
Run Code Online (Sandbox Code Playgroud)