【问题标题】:in javascript es6, How to call constructor method without using the class name?在 javascript es6 中,如何在不使用类名的情况下调用构造函数方法?
【发布时间】:2017-07-14 19:36:07
【问题描述】:
我正在尝试创建一个可以处理基本 CRUD 功能的父类,但我不知道如何在静态方法中调用构造函数。
class Model {
static find(id) {
var attrs = someDBcalls();
var obj = new CurrentClass(attrs); // how?
return obj;
}
}
class User extends Model {
constructor(attrs){
// initialize class.
}
}
User.find(1); // shall return an User object.
【问题讨论】:
标签:
javascript
inheritance
polymorphism
es6-class
【解决方案1】:
您可以使用var obj = new this(attrs);,如下所示:
function someDBcalls(id) {
return { id, success: true };
}
class Model {
static find(id) {
var attrs = someDBcalls(id);
var obj = new this(attrs);
return obj;
}
}
class User extends Model {
constructor(attrs) {
super();
// initialize class.
console.log(attrs);
}
}
var user = User.find(1); // shall return an User object.
console.log(user instanceof User);