モデルクラスを再オープンする理由は何ですか?

バックアップモデルでは、モデルを定義した後、同じファイル内で数行下に再度クラスを開き、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/