这是我想要实现的功能的一个非常基本的例子。我的问题是,当调用“greet”时,“this”上不存在appconfig,因为它在函数内部。
如何维护对外部“this”的访问并能够调用appconfig?我希望这样做,而不是把外部的“this”赋给像self这样的变量。

class Greeter {

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

    greet() {
        return getMessage();

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

最佳答案

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

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;
  }
}

10-06 03:52