es6从静态函数访问类构造函数

时间:2016-11-23 13:26:58

标签: javascript node.js ecmascript-6 es6-class

我正在尝试创建一个生成新实例的静态函数。该实例属于静态函数所属的类。

这是一个例子

class A {
  static getInstance() {
    return new A();
  }
}

到目前为止,let a = A.getInstance();这么好用。

我想在子类中继承此功能。

class B extends A {}
let b = B.getInstance(); // This will return an instance of A.

我希望B.getInstance()返回B的实例。

1 个答案:

答案 0 :(得分:1)

这似乎有用..我假设你想要这个,因为你想传递一个类作为某种构造函数/生成器。正如new A()显然有点简单。



class A {
  sayIt() { console.log('I am A'); }
  static getInstance() {
    return new this;
  }
}

class B extends A { sayIt() { console.log('I am B') } }

var k = A.getInstance();
k.sayIt();

let b = B.getInstance(); 
b.sayIt();

let k2 = new A();
k2.sayIt();

let b2 = new B();
b2.sayIt();