2016-11-23 72 views
0

我试图创建一个生成新实例的静态函数。该实例属于静态函数所属的类。es6从静态函数获取对类构造函数的访问

下面是一个例子

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

到目前为止好let a = A.getInstance();将正常工作。

我想在children类中继承这个功能。

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

我想B.getInstance()返回B.

+1

'的getInstance(){返回新本; }' – Keith

回答

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();

+0

感谢Keith的关注。它确实有效。为了建立你的答案,如果你改变sayIt()为静态,你可以用'我是$ {this.name}'代替'我是B',它会打印它所属的类:)正好解决了我的问题。再次感谢。 – SagiSergeNadir