采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如果我用这样的写法也可以实现单例。这种写法和课程中的写法应该怎么取舍?
class SingleObject { static obj = null; constructor(){ if(!SingleObject.obj){ SingleObject.obj = this; } return SingleObject.obj } }
你这种写法,如果再扩展 API 或属性,就比较麻烦了。
因为 obj 是一个普通对象,不是某个 class 创建的。
没能理解。老师能不能举个例子说明一下。为什么obj是一个普通对象,所以再扩展API或属性就会比较麻烦?谢谢
例如你要扩展两个方法 a1 和 a2 ,你应该怎么写代码呢?
回复 双越:直接这样子写不可以吗? class SingleObject { static obj = null; constructor(){ if(!SingleObject.obj){ SingleObject.obj = this; } return SingleObject.obj } a1(){ console.log(1) } a2(){ console.log(2) } } 而且obj为什么是普通对象?构造函数中的this对象不就是class的实例吗? const so = new SingleObject(); console.log(SingleObject.obj instanceof SingleObject) // 返回true
登录后可查看更多问答,登录/注册
系统学习JS设计模式,增强设计思想,提高代码质量。
1.7k 13
1.1k 10
871 10
1.1k 9
1.2k 8