inheritModel.js 464 B

1234567891011121314151617181920212223242526
  1. const cache = new Map();
  2. function inheritModel(ModelClass) {
  3. let inherit = cache.get(ModelClass.name);
  4. if (!inherit) {
  5. inherit = createClassInheritor(ModelClass.name);
  6. cache.set(ModelClass.name, inherit);
  7. }
  8. return inherit(ModelClass);
  9. }
  10. function createClassInheritor(className) {
  11. return new Function(
  12. 'BaseClass',
  13. `
  14. 'use strict';
  15. return class ${className} extends BaseClass {}
  16. `
  17. );
  18. }
  19. module.exports = {
  20. inheritModel
  21. };