В чем причина повторного открытия класса модели?

Я заметил, что в модели Backup сначала объявляется сама модель, а затем ниже в том же файле она переоткрывается, добавляя такие функции, как 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.

Немного больше информации о reopenClass и reopen: https://guides.emberjs.com/release/object-model/reopening-classes-and-instances/