思考
在组织数据,对象的时候,我们经常需要考虑,是静态还是实例,这是一个令人纠结的问题
特点
静态数据的特点是,这个类加载的时候,这个数据就会存在了,通常是一些全局的数据
而实例的数据,则是伴随着构造函数生成,在实例对象无法访问时候,生命周期随着消失
使用
【多实例】通常View对象使用实例对象,或者说存在多实例的情况
【状态】需要经常从初始状态开始变化的对象,如界面拼好的时候有一个开场动画,如果采用单例形式,每次需要播放一次开场动画,都需要手动归位一遍,通常会经常有状态改变的,建议new
【单例】单例其实可以认为是一种特殊的静态
【单例or静态】静态通常是一些静态方法的工具类,适合方法比较独立,属性比较少的类,单例可以用在一些管理类,因为会有一些状态缓存,需要频繁的使用this
【静态的this】ts静态的this会指向当前类,个人认为这个是比较有歧义的,因为一些强类型的编程语言(如C++),是不允许在静态方法上面使用this的,使用this的时候一定明确是实例对象(原因应该是js的类也是对象),解决上通常我们会在一些管理类中用到,可以通过保存一个实例来使用这个类
【getInstance的优缺点】使用单例可以快速访问,但是会有一些缺点,会有很长的访问链(我们可以简化成为 static get ins(): xxx)简化它,同时生命周期无法伴随一些归属模块而消失
【obj和静态类】其实静态类就是起到一个obj的作用,但是可以额外的可以声明数据类型,相当于多了一个类型接口声明的功能,通常使用静态类即可
【静态的优缺点】静态方便快速访问,会常驻内存,一些基础数据的放全局还好,如果需要创建的对象比较多,我们就需要考虑这个对象是否按需创建了