" new self()"相当于Javascript

时间:2017-06-19 10:09:00

标签: javascript

我有一个如下课程:

const Module = {
  Example: class {
    constructor(a) {
      this.a = a;
    }

    static fromString(s) {
      // parsing code
      return new Module.Example(a);
    }
  }
}

到目前为止,这是有效的,但是通过全局名称Module.Example访问当前的类构造函数是一种丑陋的,容易破坏。

在PHP中,我会在这里使用new self()new static()来引用定义静态方法的类。在Javascript中是否有这样的东西并不依赖于全局范围?

1 个答案:

答案 0 :(得分:13)

您可以在静态方法中使用this。它将引用类本身而不是实例,因此您可以从那里实例化它。所以:

const Module = {
  Example: class Example {
    constructor(a) {
      this.a = a;
    }

    static fromString(s) {
      // parsing code
      return new this(s);
    }
  }
}

console.log(Module.Example.fromString('my str')) // => { "a": "my str" }