🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 2.工厂方法: 工厂方法模式本意是将实际创造的对象推迟到子类中,这样核心类就变成了抽象类。但是在js中很难像那些传统面向对象语言那样去实现抽象类,所以在js中我们只需要参考他的思想即可。 我们可以把工厂函数看成是一个工厂类。在简单模式我们,我们添加一个新的对象需要修改二处地方,在加入工厂方法模式以后,我们只需要修改一处即可。工厂方法的工厂类,他只做实例化这一件事情。我们只需要修改他的原型类即可。我们采用安全模式创建工厂对象。 ~~~ let factory = function (role) { if(this instanceof factory) { var s = new this[role](); return s; } else { return new factory(role); } } factory.prototype = { admin: function() { this.name = '平台用户'; this.role = ['登录页', '主页'] }, common: function() { this.name = '游客'; this.role = ['登录页'] }, test: function() { this.name = '测试'; this.role = ['登录页', '主页', '测试页']; this.test = '我还有一个测试属性哦' } } let admin = new factory('admin'); let common = new factory('common'); let test = new factory('test'); ~~~ 在上述代码中要是忘记加new了, 那么我们就获取不到admin,common等对象了,使用安全模式可以很好的解决这个问题。