Javascript 访问静态函数ES6中的类范围

Javascript 访问静态函数ES6中的类范围,javascript,es6-class,Javascript,Es6 Class,如何使用类的静态函数访问此范围?我是不是遗漏了什么 class Example { constructor() { this.name = 'Johan'; } static hello(){ // How to access `this` scope here in the static Example.name; // Undefined this.name; // Undefined } } 注释者是正确的,这在静态类方法的上下文

如何使用类的静态函数访问此范围?我是不是遗漏了什么

class Example {

  constructor() {
    this.name = 'Johan';
  }

  static hello(){

    // How to access `this` scope here in the static

    Example.name; // Undefined
    this.name; // Undefined
  }

}

注释者是正确的,这在静态类方法的上下文中是类本身

当您使用new创建类的实例时,该实例就是它自己的实例。您可以通过此访问实例上的属性和方法

请参见以下示例:

课例{ 建造师{ this.name='Johan'; } 静态你好{ console.logthis; console.logthis.name; } } Example.hello;//注销上面的类定义,后跟类本身的名称。 设x=新示例; console.logx.name;//注销“Johan”。
x、 你好;//x没有“hello”。唯一的例子是。hello中的这个是类本身。这里的前提是有缺陷的-您在一个类的实例中设置了this.name,而静态方法本身没有。我理解这一点,但使用Example.name访问this.name会导致未定义。name是一个实例变量。要访问它,必须在静态方法中创建一个实例。Example.name意味着name是该类的静态成员,显然不是。你能给我一个例子吗?谢谢,但我需要在该类的静态函数内而不是在外部运行该实例。这可能吗?意思是在静态hello中,我需要访问this.name,而不需要在类外获取它。@Nicos:你想要的没有意义。如果静态调用一个方法,则没有实例,因此没有此实例。Javascript无法为您确定所需的类实例。因此,不要在这方面进行黑客攻击,试着找出你为什么要这样做,然后试着用一种不需要这种黑客攻击的不同方式解决你的问题。谢谢你,这就是我想知道的。在静态类方法的上下文中,这是…,不,不是类原型本身。