javascript - 在javascript es6中,如何在不使用类名的情况下调用构造函数方法?

标签 javascript inheritance polymorphism es6-class

我正在尝试创建一个可以处理基本 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.

最佳答案

您可以使用 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);

关于javascript - 在javascript es6中,如何在不使用类名的情况下调用构造函数方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110451/

相关文章:

php - 在 php 中保存文本区域的内容

javascript - 禁用从 chrome 控制台编辑 javascript?

Javascript `?.` 运算符 : why is `not defined` not treated as `undefined` ?

c - C 中的多态性和赋值运算符

scala - 重载泛型隐式转换

javascript - 合并事件监听器

c++ - 广义复制构造函数

java - 从 JSON 重建子对象

未检测到父类(super class)中声明的 Swift 协议(protocol)一致性

C++ - 传递智能指针派生类