大家或多或少都用过单例模式,那么我就在这里和大家说说这两种单例的区别:
导出式单例: 例如: export default new A; //A 是一个类
这种单例很方便, 但也是因为方便,这个导出的单例在我们 导入时就已经创建好了对象,如果一直使用这种单例方式那么随着我们脚本越来越多,你会发现启动速度越来越慢。特别是在construct里面初始化资源或者计算的一些类,会严重拖慢启动速度。。
函数式单例: 这个才是正确的使用方式,在第一次获取时创建,构造也能分开进行。可以减少程序启动的时间。其实这个单例什么都好,就是写多了单例类之后你就会发现。每次都要添加重复的函数和实例变量。还占用了一些代码空间。这让强迫症患者有点难受。
之前在公司看到过一个单例方法:用一个键为类名,值为实例对象的Map来存取变量,就不用每个类写重复的代码了,但是这样对于类名重复的类还是有问题。那么有没有什么好办法既可以在第一次获取时才创建对象又避免copy很多重复代码呢?请看下面大哥示例。



,之前也想过继承,忘了可以new this