Class中的函数访问'this'

时间:2016-06-24 21:03:10

标签: 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;
		}
	}
}

1 个答案:

答案 0 :(得分:5)

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

class Greeter {

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

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

    return getMessage();
  }
}

您可以阅读有关箭头功能here的更多信息。

虽然在这种情况下,我建议你只在课堂上制作另一个私人方法并调用它。

class Greeter {

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

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

  private getMessage() {
    return this.appConfig.value;
  }
}