重新开放模型类的原因是什么?

我注意到备份模型在同一个文件中先定义了一个模型,然后在几行之后重新打开它,添加了如 find、start、cancel 等功能。我想知道这样设计的原因是什么?为什么需要重新打开这个类?我相信这肯定有合理的理由,只是我还不了解。 :slight_smile:

const Backup = Discourse.Model.extend({
  destroy() {},
  restore() {}
});

Backup.reopenClass({
  find() {
  ...
  }
  // 等等
});

参见:https://github.com/discourse/discourse/blob/master/app/assets/javascripts/admin/models/backup.js.es6

好问题,我之前也对这个有点困惑!

reopenClass 用于向类本身添加静态方法(或属性)。我认为无法通过 Ember.Object.extend 来定义静态方法。

关于 reopenClassreopen 的更多信息:https://guides.emberjs.com/release/object-model/reopening-classes-and-instances/