实例化一个班级或另一个班级中的另一个班级

时间:2019-09-19 19:19:45

标签: javascript

我正在实现一个JS模块来处理数据持久性。有一个高级类检查window.localStorage是否存在,并根据结果将存储变量设置为以下两个类之一的实例:LocalStorage和MemoryStorage。 LocalStorage类在构造函数上注入了存储,因此可以灵活地进行测试。 虽然我有一些有效的方法,但对我来说并没有优化。有更好的方法吗?

class Storage {
  constructor() {
    this.storage = window.localStorage ? new LocalStorage(window.localStorage) : memoryStorage
  }
}

export default class LocalStorage {
  constructor(storage) {
    // The ternary isn't that relevant. I didn't put much thought into it yet
    this.storage = storage ? storage : {};
  }
}

class MemoryStorage {
  constructor() {
  }
}
export const memoryStorage = new MemoryStorage();

我希望对此进行改进,但也理解为什么,因为感觉不对。

1 个答案:

答案 0 :(得分:0)

我最终创建了一个工厂,该工厂执行了一个函数,该函数将评估可用的存储类型,并优先处理LocalStorage,而LocalStorage和MemoryStorage都扩展了Storage类。

相关问题