Was ist der Grund für die Wiedereröffnung der Model-Klasse?

Mir ist aufgefallen, dass das Backup-Modell zunächst definiert und dann einige Zeilen später in derselben Datei erneut geöffnet wird, um Funktionen wie find, start, cancel usw. hinzuzufügen. Ich frage mich, was der Grund dafür ist? Warum muss die Klasse erneut geöffnet werden? Ich bin mir sicher, dass es dafür einen triftigen Grund gibt… ich kenne ihn nur nicht :slight_smile:

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

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

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

Schöne Frage, ich war auch etwas verwirrt!

reopenClass wird verwendet, um statische Methoden (oder Eigenschaften) direkt zur Klasse hinzuzufügen. Ich glaube nicht, dass es eine Möglichkeit gibt, eine statische Methode über Ember.Object.extend zu definieren.

Etwas mehr Informationen zu reopenClass und reopen: https://guides.emberjs.com/release/object-model/reopening-classes-and-instances/