如何在Javascript中同时使用静态和实例方法

如何在Javascript中同时使用静态和实例方法,javascript,php,oop,Javascript,Php,Oop,我有这种PHP设计(类似于雄辩的ORM): 我是这样使用它的: $user = User::getUser(1); 现在,我想用Javascript实现这一点。我走了这么远: var User = function(id, name) { this.id = id; this.name = name; } User.prototype.getName = function() { return this.name; } 如何添加静态函数 我如何调用它以便它返回一个实

我有这种PHP设计(类似于雄辩的ORM):

我是这样使用它的:

$user = User::getUser(1);
现在,我想用Javascript实现这一点。我走了这么远:

var User = function(id, name) {
    this.id = id;
    this.name = name;
}

User.prototype.getName = function() {
    return this.name;
}
如何添加静态函数

我如何调用它以便它返回一个实例化的对象

这个设计模式有名字吗


更新:

我的问题的简短回答是:

User.getUser = function(id) {
    //get data from database
    return new User(id, 'Adam');
}
如何添加静态函数

对于ES5,您将使用:

User.staticMethod = function (user, name) {
  user.name = name;
}
我如何调用它以便它返回一个实例化的对象

这个设计模式有名字吗

这是一个很好的例子

如何使用ES6使其更加简洁

User.staticMethod = function (user, name) {
  user.name = name;
}
User.staticMethod = function (id, name) {
  return new User(id, name);
}
class User {
  static createUser(id, name) {
    return new User(id, name);
  }

  constructor(id, name) {
    this.id = id;
    this.name = name;
  }

  get name() {
    return this.name;
  }
}