🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
JS中可以有许多设计模式,在这些中推荐使用组合构造函数和原型模式; 因为不太善于写文章,所以下面简化文字叙述,直接看代码 ## 工厂模式 ```js function person(name,age){ var obj={} obj.name=name; obj.age=age; obj.sayName=function(){ console.log(this.name); } return obj; } ``` ## 构造函数模式 正常情况下我们将函数名起为大写字母开头 ```js function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ console.log(this.name); } } var a=new Person("张三",29); var b=new Person("李四",22); a.sayName(); b.sayName(); ``` 构造函数可以通过 `new` 关键字来进行处理,使其实例化,每个都有独有数据,也就是私有变量 ## 原型模式 ```js function Person(){ } Person.prototype.name = "Li Si"; Person.prototype.age = 21; Person.prototype.sayName=function(){ console.log(this.name); } var person1=new Person(); person1.sayName(); //"Li Si" var person2=new Person(); person2.sayName(); //"Li Si" ``` 原型模式所有的都共用同一个数据,相当于公有变量 ## 组合模式:构造函数和原型模式结合 通过上面两个例子,两个都有独有的特性,所以我们可以组合两者了来进行处理,一般推荐使用组合模式 ```js function Person(name,age){ this.name=name; this.age=age; } Person.prototype.sayName=function(){ console.log(this.name); } var person1=new Person("张三"); person1.sayName(); //"张三" var person2=new Person("李四"); person2.sayName(); //"李四" ``` 这样各自经过实例化后,都有自己的独有数据,但是却有着公共方法;