采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如果我用这样的写法也可以实现单例。这种写法和课程中的写法应该怎么取舍?
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设计模式,增强设计思想,提高代码质量。
2.2k 13
1.4k 10
1.2k 10
1.4k 9
1.5k 8
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号