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

时间:2018-04-09 16:52:17

标签: javascript es6-class

如何使用类的静态函数访问this范围?我在这里错过了什么吗?

class Example {

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

  static hello(){

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

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

}

1 个答案:

答案 0 :(得分:1)

评论者是正确的,this在静态类方法的上下文中是类本身。

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

请参阅以下示例:

class Example {

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

  static hello(){
    console.log(this);
    console.log(this.name);
  }

}

Example.hello();  // logs out the above class definition, followed by the name of the class itself.

let x = new Example();
console.log(x.name);  // logs out 'Johan'.

x.hello(); // x does not have `hello()`.  Only Example does.