采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
感觉在JS里面要实现一个单例直接使用一个字面量不就好了吗? let single={ a,b } 这个样子不就已经实现了单例了,不需要再去套用java的了吧 而模块化本身就是一个单例的对象 export {}
实现是可以实现,不过会有一些不同。
你思考一下,使用方如果视图去“非法的”修改单例的数据,在你这种方式和视频中讲的方式中,会有什么不同。
不是很懂这种非法的去修改是什么意思
function A(){ let a='1' this.b=2 return { b:this.b } } let a=new A() console.log(a.a); console.log(a.b); 是指类似这个样子的实现吗?通过闭包实现了私有变量,如果是这样哪确实没有办法做到,如果是使用字面值得话,但是如果是使用了模块化,则完全可以把私有变量放到对象的外部,而且如果使用ES6的class要想强制实现私有变量也是把私有变量放到外部来实现吧?而且也只限于单例模式,从某种程度上来说感觉以前的实现方式好像还要优于ES6的class
所谓“非法的”修改,就例如,你是这个单例的开发者,给 A B C D 四个人使用,但是他们可能拿到你的单例数据之后,做一下自己的改动,你需要做的是,如果 A 修改了单例的数据,不要影响到 B
登录后可查看更多问答,登录/注册
系统学习JS设计模式,增强设计思想,提高代码质量。
1.8k 13
1.1k 10
889 10
1.1k 9
1.3k 8