모델 클래스를 다시 열어야 하는 이유는 무엇인가요?

백업 모델이 모델을 정의한 후 같은 파일에서 몇 줄 아래에서 다시 열어 find, start, cancel 같은 함수를 추가하고 있다는 것을 알아차렸습니다. 이렇게 하는 이유는 무엇일까요? 클래스를 다시 열어야 하는 이유는 무엇인가요? 분명히 유효한 이유가 있을 것 같은데… 저는 그 이유를 모르겠네요 :slight_smile:

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

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

참고: 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/