Class中的函数访问'this'

mrs*_*nce 2 typescript

这是我想要实现的功能的一个非常基本的例子.我的问题是,当调用'greet'时,appConfig将不会存在于'this'上,因为它在函数内部.

如何保持对外部'this'的访问并能够调用appConfig?我希望这样做而不将外部'this'分配给像self这样的变量.

class Greeter {
	
	static $inject = ['appConfig'];
    constructor(
		private appConfig: any
	) {
    }
	
    greet() {
        return getMessage();
		
		function getMessage() { 
			return this.appConfig.value;
		}
	}
}
Run Code Online (Sandbox Code Playgroud)

tos*_*skv 5

您可以改用箭头功能.它们继承了闭包的上下文.

class Greeter {

  static $inject = ['appConfig'];
  constructor(
    private appConfig: any
  ) {}

  greet() {
    let getMessage = () => this.appConfig.value;

    return getMessage();
  }
}
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多关于箭头的功能在这里.

虽然在这种情况下我会建议你只在类中创建另一个私有方法并调用它.

class Greeter {

  static $inject = ['appConfig'];
  constructor(
    private appConfig: any
  ) {}

  greet() {
    return this.getMessage();
  }

  private getMessage() {
    return this.appConfig.value;
  }
}
Run Code Online (Sandbox Code Playgroud)