【问题标题】: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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      相关资源
      最近更新 更多