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(); //"李四"
```
這樣各自經過實例化后,都有自己的獨有數據,但是卻有著公共方法;